集合
和数组类似也是一种数据结构,但是和数组不同。
数组的特点: 1、数组中存放的元素,必须相同的数据类型 2、数组的长度是固定的,在定义的时候就指定了数组的长度 容器的特点: 1、数据类型,只要是Object类型即可 2、长度不固定,可以根据自身的需要进行添加
集合的层次关系
Collection java.util.Collection 是一个接口Collection层次结构中的根接口 List java.util.List 是一个接口 有序的 collection(也称为序列) 元素可以重复 实现类,大多数是以 List 结尾 LinkedList 内部使用是链表 增删快 查找慢 ArrayList 内部使用数组实现的 查找快 增删慢 线程不安全 Vector 内部使用数组实现的 查找快 增删慢 线程安全 Set java.util.Set 是一个接口,是没有顺序的 里面的元素不能重复 Map java.util.Map 是以键值对的形式出现的 例如:key -- value 身份证号 --- 人名 key是不能重复的 value是可以重复的
Collection
- Collection是一个集合接口,集合对象可以随意的添加删除对象
- 添加方法 add(E object)
- 删除方法 remove(Object object)
- 清空元素 clear()
- 元素个数 size()
是否为空 isEmpty()
注意事项 通常不直接使用Collection,而是使用子接口List,Set
List
- List的实现类相当于是一个存储对象的可变数组
- 是一个接口,有序的 collection,元素可以重复
子类
List: API 1.2 |--Vector:内部是数组数据结构,是同步的。增删,查询都很慢! 1.0 |--ArrayList:内部是数组数据结构,是不同步的。替代了Vector。 查询的速度快。--可变数组 创建一个新数组 将原来的复制到新建的数组 即可 |--LinkedList:内部是链表数据结构,是不同步的。增删元素的速度很快。
通常使用的实现类为:ArrayList
ArrayList常用方法
增 add(Object o); 添加一个元素 add(int index, Object o); 在指定的索引位置添加一个元素 删 remove(Object o); 删除元素 list.remove(new Integer(1)); remove(int index); 删除指定索引位置的元素 list.remove( 1 ); clear(); 清空List中的元素 改 set(int index, Object o); 查 get(int index)
遍历
List list = new ArrayList(); list.add("abc1"); list.add("abc2"); list.add("abc3"); /* 迭代器用于for循环 */ for (Iterator iter = list.iterator(); iter.hasNext();) { String str = (String) iter.next(); System.out.println(str); } /* 迭代器用于while循环 */ Iterator iter = list.iterator(); while (iter.hasNext()) { String str = (String) iter.next(); System.out.println(str); }
Map
- Map实现类是一种存储键值对的集合
- 是以键值对的形式出现的
常用的子类
Map常用的子类: |--Hashtable :内部结构是哈希表,是同步的。不允许null作为键,null作为值。 |--Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。 |--HashMap : 内部结构是哈希表,不是同步的。允许null作为键,null作为值。 |--TreeMap : 内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。
通常使用的实现类为:HashMap
HashMap常用方法
增 put(K key, V value) 如果key不存在,则添加 删 remove(Object key) 根据key进行删除 改 put(K key, V value) 如果可以存在,则进行修改 查 get(Object key) 判断包含 containsKey(Object key) containsValue(Object value)
对map进行遍历
//1、定义了一个HashMap对象 HashMap hm = new HashMap(); //2、向map中添加元素 key--value 身份证号 ---姓名 hm.put("one", "11111"); hm.put("two", "2222"); hm.put("three", "3333"); hm.put(999, 999999); //3、获取map中所有的key Set key = hm.keySet(); //4、通过key去调用iterator() 返回一个 Iterator 判断是否含有下一个元素 for (Iterator iterator = key.iterator(); iterator.hasNext();) { //5、将每一个 返回的 key 赋值给Object 类型的 next ---》map中key Object next = iterator.next (); //6、 将key 和 对应的value 输出 通过get方法将key对应的value获取到 System.out.println( next + " = "+ hm.get(next)); }