标签:
Collection子接口:
---list接口(元素有序的可以重复)又称为“动态数组”
---vector(古老的实现类)特点是线程安全的(不管怎么样就是不用这个了)
---arrayList(List的主要实现类)(底层是用数组实现的)
---linkedList(底层是用链表实现的)(对于频繁的插入和删除操作建议选择这个)
contains()方法
集合中判断object元素是否相同的时候调用的是这个类的equals方法,所以一般在集合中存的时候都要求重写equals方法
---set接口(元素无序不可以重复 无序性但不是随机性,
)类似于高中集合,
---HashSet(主要实现类)遍历出来的顺序和添加进去的顺序是不同的
---linkedHashSet 遍历出来的顺序和添加进去的顺序是相同的,维护了添加顺序,插入性能比HashSet低,但是遍历性能是最好的
---SortedSet
---TreeSet特点:①往里添加的元素必须是同一个类型的,要么全是integer类型要么我全是String类型的。
②可以按照指定的顺序遍历,像String是按照从小到大的顺序遍历的
③对于自定义的类遍历,必须实现排序方式,不然TreeSet不知道按照什么方法遍历元素,所以插不进去, ④自定义类有两种方法,1,自然排序
2,定制排序 (定制排序)关于这两个排序参考笔记(TreeSet中的自然排序和定制排序)
⑤往TreeSet中添加元素的时候会首先比较compareTo()方法,一旦返回0,虽然两个对象仅仅此属性相同,但是程序还是会认为这两个元素是相同的,所以后面那个元素无法插入集合中!
添加到treeSet中的元素类必须保证compareTo()方法,HashCode()方法还有equals()方法一致
加入Set的集合中的元素必须实现equals()方法和HashCode()方法来保证Set集合中的不可重复性,equals()方法和HashCode()方法必须保持一致性
Set中的存储是使用了哈希算法。 存进去的时候首先调用器HashCode()方法求hash值,此hash值决定了元素的存储位置,如果此位置有元素再判断是否equals(),如果equals就无法存进去,如果只重写了equals()
方法,hash值还是不同还是无法存进Set中
Map子接口:具有key-value对的集合
类似于高中的函数 其中key是使用Set存的 value是使用Collection存储的
---HashMap(主要实现类)
---LinkedHashMap和
linkedHashSet相似
---TreeMap 自然排序,定制排序(针对key的)
---HashTable(线程安全,古老的类不使用)(子类properties)
Map的遍历:①遍历key集 使用 Set key = map.KeySet(); 遍历key就行
②遍历value集, 使用Collection value = map.values();
③遍历key -value对
Collections:操作Collection和Map的工具类。
详细方法可参考JavaAPI文档
Java集合总结
标签:
原文地址:http://blog.csdn.net/ttf1993/article/details/44957931