Java集合分为Collection和Map两种体系
Collection接口: Set接口 : 元素无序,不可重复的集合------数学意义上的集合;
Set中常用的方法,都是Collection中的
主要实现类:HashSet(主要实现类), LinkedHashSet,TreeSet
1. 如果要保证Set中的不可重复性,因此存进Set的元素类必须要重写equals()和hashCode()
2. Set中的无序性,是指存储的时候是无序的,不同于List的连续或者前一个指针指向后一个指针;
3. LinkedHashSet : 使用链表维护了一个添加进集合中的顺序,导致当我们遍历LinkedHashSet集合
元素时,是按照添加进去的顺序遍历的。遍历的时候,比较方便,但是添加会比较慢,因为要维护链表.
4. TreeSet中添加的元素只能是同一个类的,并且该类必须实现java.lang.Comparable接口(重写compareTo())
可以按照添加进集合的元素指定的顺序遍历,依据就是compareTo()方法
String,包装类等默认按照从小到大的顺序遍历。
List接口: 元素有序,可重复的集合 ------动态数组
主要实现类: ArrayList (主要实现类,底层是数组实现),LinkedList(底层是链表实现),
Vector(古老的实现类,线程安全的,但是操作比较慢效率低于ArrayList)
Map接口: 具有映射关系的“key-value”键值对的集合
主要实现类: HashMap, LinkedHashMap,Hashtable,TreeMap
集合的遍历方法:
1. for循环
Collection coll = Arrays.asList(1,2,35,5); //数组转成集合
Object[] obj = coll.toArray(); //集合转成数组
for(int i =0;i<obj.length;i++){
System.out.println(obj[i]);
}
2. 增强for循环
for(Object o : coll){
System.out.println(o);
}
3. 迭代器
Iterator iterator = coll.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}