扩展:

For-each循环

for (String s: str) {
System.out.println(s);

}

等同于
for (int i = 0; i < str.length; i++) {
      String s = str[i];
      System.out.println(s);
}

是J2SE 1.5提供的另一种形式的for循环,可以用来处理不知道str长度的情况

顺序容器

泛型容器类 ArrayList

ArrayList<String> notes = new ArrayList<String>

容器的类型ArrayList  元素的类型String

例子:

package notes;

import java.util.ArrayList;

public class NotesBook {

private ArrayList<String> notes = new ArrayList<String>(); //创建容器:notes

public void add(String s){ //添加方法

notes.add(s);

}

public void add(String s, int Location){

notes.add(Location, s);

}

public int getSize(){ //获取数量

return notes.size();

}

public String getNote(int index){ //通过索引来查找

return notes.get(index);

}

public void removeNote(int index){ //通过索引删除

notes.remove(index) ;

}

public String[] list(){

String[] a = new String[notes.size()]; //获取一个实际的数组(包含了列表的内容)

// for( int i=0;i<notes.size();i++){

// a[i]=notes.get(i);

// }

notes.toArray(a); //相当于以上循环

return a;

}

public static void main(String[] args) {

NotesBook nb = new NotesBook();

nb.add("first");

nb.add("second");

nb.add("thrid", 1);

System.out.println(nb.getSize());

System.out.println(nb.getNote(1));

System.out.println("remove后-------------------------");

nb.removeNote(1);

String[] a =nb.list();

for(String s : a){ //处理不知道s长度的情况

System.out.println(s);

}

}

}

对象数组

对象数组中的每个元素都是对象的管理者而非对象本身。

For-each循环

class Value{

private int i;

public void set(int i){

this.i=i;

}

public int get(){

return i;

}

}

....

public static void main(String[] args) {

Value[] a = new Value[10];

for( int i=0; i<a.length; i++){

a[i] = new Value();

a[i].set(i);

}

for(Value v : a){

System.out.println(v.get());

v.set(0); //在此设置为0

}

for(Value v : a){

System.out.println(v.get());

}

}

}

容器类也是可以使用for-each

ArrayList<String> b = new ArrayList<String>();

b.add("first");

b.add("second");

for (String s : b){

System.out.println(s);

}

集合容器(set) 就是数学上的集合set(唯一性 没有排序)

格式:HashSet<String> s = new HashSet<String>();

区别:

ArrayList<String> b = new ArrayList<String>();

b.add("first");

b.add("second");

b.add("first");

for (String s : b){

System.out.println(s);

}

System.out.println("------我是分割线------");

HashSet<String> s = new HashSet<String>();

s.add("F1");

s.add("S2");

s.add("F1");

for(String k : s){

System.out.println(k);

}

更加直观的直接输出s 结果如下:

而这两个容器包括了普通如上value类中加了(public String toString(){return “”+i})

Hash表 也叫做散列表HashMap<k,v> 键是唯一的输出最后一个

Java的Hash表可以以任何实现了hash()函数的类的对象做值来存放对象。

private HashMap<Integer,String> cname = new HashMap<Integer,String>();

package notes;

import java.util.HashMap;

import java.util.Scanner;

public class Corn {

private HashMap<Integer,String> cname = new HashMap<Integer,String>();

public Corn(){ //构造

cname.put(1, "penny");

cname.put(10, "dime");

cname.put(25, "quarter");

cname.put(50, "half-dolar");

System.out.println(cname.keySet().size());

for(Integer k: cname.keySet()){

String s =cname.get(k);

System.out.println(s);

}

}

public String getName( int amount){

if(cname.containsKey(amount)){

return cname.get(amount);

}else{

return "NOT FOUND";

}

}

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

int amount =in.nextInt();

Corn corn =new Corn();

String name= corn.getName(amount);

System.out.println(name);

}

}

Java基础——对象容器(顺序、集合、Hash)的更多相关文章

  1. java基础之容器、集合、集合常用方法

    一.容器(Collection):数组是一种容器,集合也是一种容器 java编程中,装其他各种各样的对象(引用类型)的一种东西,叫容器 注意: 1.数组的长度是固定的 2.集合:长度不固定, 可以随时 ...

  2. JAVA基础第五章-集合框架Map篇

    业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...

  3. Java基础-引用数据类型之集合(Collection)

    Java基础-引用数据类型之集合(Collection) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便 ...

  4. Java中的容器(集合)之ArrayList源码解析

    1.ArrayList源码解析 源码解析: 如下源码来自JDK8(如需查看ArrayList扩容源码解析请跳转至<Java中的容器(集合)>第十条):. package java.util ...

  5. Java中的容器(集合)之HashMap源码解析

    1.HashMap源码解析(JDK8) 基础原理: 对比上一篇<Java中的容器(集合)之ArrayList源码解析>而言,本篇只解析HashMap常用的核心方法的源码. HashMap是 ...

  6. Java基础知识强化之集合框架笔记76:ConcurrentHashMap之 ConcurrentHashMap简介

    1. ConcurrentHashMap简介: ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和Hashtable功能相同但是线程安全的方法.Conc ...

  7. 《java基础——对象的拷贝》

    java基础--对象的拷贝 一.浅拷贝: 规则: 1. 浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化. 2. 浅拷贝相当于两个对象共用一套实例. 格式: 类名 对象 ...

  8. [ Java学习基础 ] Java的对象容器 -- 集合

    当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这 ...

  9. Java基础知识强化之集合框架笔记13:Collection集合存储学生对象并遍历

    1. Collection集合存储学生对象并遍历: 需求:存储自定义对象并遍历Student(name,age) 分析: (1)创建学生类 (2)创建集合对象 (3)创建学生对象 (4)把学生对象添加 ...

随机推荐

  1. 【适合核显电脑的环境配置】Tensorflow教程-Windows 10下安装tensorflow CPU with Anaconda

    安装TensorFlow 1.5.0 CPU版本 :仅支持CPU的TensorFlow. 如果您的系统没有NVIDIA GPU,则必须安装此版本. 1.首先下载和安装Anaconda TensorFl ...

  2. RMAN_RAC归档日志备份包恢复到单机

    恢复归档日志的方法: RAC是ASM的存储且是OMF创建的格式,所以RAC的日志名为如下+ARCH/mioa/archive/1_73554_875548170.dbf.+ARCH/mioa/arch ...

  3. oracle SQL 执行进度

    SELECT SS.USERNAME, SS.SID, SS.SERIAL#, SS.MACHINE, SS.PROGRAM, SL.OPNAME, SL.TARGET, SL.START_TIME, ...

  4. Jupyter notebook工具栏隐藏和jupyter notebook主题更改

    有趣的事,Python永远不会缺席! 如需转发,请注明出处:小婷儿的python  https://www.cnblogs.com/xxtalhr/p/10747200.html 一.问题 Jupyt ...

  5. template 与 host , item trigger的关系

    1.host关联template的关系 .Host可以连接到一个或多个模板. Template具有继承关系,可以从一个Template link到另外一个Template. . Host和Templa ...

  6. 01-Jenkins-Master节点安装

    Jenkins安装前需要JDK8,下载最新版本的Jenkins LTS 2.150.防止下载缓慢可以通过清华源进行下载. [root@node1 ~]# wget https://mirrors.tu ...

  7. CSS选择器之基本选择器总结

    一.元素选择器(所有浏览器支持) 元素选择器(标签名选择器)其实就是文档的元素,如html,body,p,div等等, 下面例子中选择了span元素,并设置了字体颜色为红色. <body> ...

  8. Java多线程学习(一)---并发与多线程

    Java并发与多线程 摘要: 1. 并发与并行的区别,何为并发编程,并发编程的优势在哪 2. 多线程.多任务.多进程机制概述 3. 多线程.多任务.多进程机制与编程思想的关系 一.并发 1.1 并发与 ...

  9. Elasticsearch 思维导图集锦(持续更新...)

    目录 引言 思维导图 全文搜索 Elastic 基础 Query DSL Multi Match Query 系列文章列表 参考 引言 本文主要是对 elasticsearch 的一些知识点使用思维导 ...

  10. 几种事务的隔离级别,InnoDB如何实现?

    事务ACID特性,其中I代表隔离性(Isolation). 什么是事务的隔离性? 隔离性是指,多个用户的并发事务访问同一个数据库时,一个用户的事务不应该被其他用户的事务干扰,多个并发事务之间要相互隔离 ...