1.所有的集合都是collection的子类,collection 的取出用的是内部类迭代器,并且iterator只有三个方法。由hasNext判断是否存在下一个元素,由next()方法取出元素。遍历的时候为了提高效率用for循环,不用while因为for循环遍历之后会释放Iterator对象。
2.collection下存在两个接口,分别是list和set
list:特点有序的集合,可以有重复的元素,取出方法两种,传统的Iterator和get(index)。并且在遍历的时候,如何利用iterator()方法是不能够在遍历的时候随着遍历的结果判断条件然后在其中添加元素的,如果添加会报错,并发的问题,(也就是说遍历的时候不可以添加元素),解决的办法:listIterator()这个接口是存在添加的,可以很好的解决此问题。
set:无序,不允许重复的元素。取出利用迭代器。
2.1 list下面比较常用的对象:vector 它的内部是数组数据结构,同步的,因为是同步的所以增加删除和查找都是非常慢的。
arrayList 它的内部也是数组数据结构,是非同步的。因为是数组结构在堆中存储是连续的,所以查找的速度会比较的快。
linkedList它的内部结构是链表,在堆中的存储是一个链表接口,第一个数据中不仅存储着第一个数据的值,也存储着下一个数据中的地址值,所以它的增加和删除是非常的快的。
所以在写程序的时候根据需要选择相对应的对象,但一般情况下vector是不常用,因为他是同步的,用起来是比较慢的。
2.2 set 下面的对象 hashset 内部是哈希表 set的取出只有一个方法就是迭代器。它的有序是用linkedhashset
treeset 树:使用元素的自然顺序,他有自己的排序。顺序是固定的。
3.map.添加:put
删除:remove
判断:isEmpty() containsKey() containsValue()
获取:1)keyset 此方法就是把map中的key全部取出来 变为Set集合,然后再遍历它 Set keyset = map.keySet();利用Iterator it = keyset.iterator(); while(it.hasNext()){map.get(it.next())}.
2)entrySet 此方法是通过map的entrySet方法来实现取出 set<Map.Entry<Integer,String>> entrySet =map.iterator();
Iterator<Map.Entry<Integer,String>> it = entrySet.iterator();
while(it.hasNext()){
Map.Entry<Integer,String> me=it.next();
Integer key = me.getKey();
String value = me.getValue();
System.out.println(key+"::"+value);
}
子类:hashtable: 内部结构是哈希表,同步的,不允许null键和null置 里面有一个properties
hashMap :内部结构也是哈希表,是不同步的,允许存储null键null值。
treeMap: 内部结构是二叉树,不是同步的,可以对map中的键进行排序。
4.泛型:泛型在编译的时候有,但在运行的时候会对泛型进行擦除,因为在运行的时候泛型并没有作用了,但是只是在运行的时候擦除,当应用的时候会对其进行补偿。