java知识整理-----集合
Posted 残酷游戏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java知识整理-----集合相关的知识,希望对你有一定的参考价值。
Iterator接口:遍历Collection集合中的元素,称为迭代器。
boolean hasNext();
Object next();
void remove();
用Iterator对集合进行迭代的时候,如果同时又用集合对象的方法操作集合中的元素,会发生ConcurrentModificationException异常,所以在迭代的时候只能用迭代器的方法操作元素,可是Iterator方法有限,只能对元素进行判断,取出和移除操作,如果想要进行其他操作,如添加,修改等就需要使用其子接口:ListIterator.
|------ListIterator:在Iterator上增加额外方法,支持双向输出
void set(E);
void add(E);
boolean hasPrevious(); 返回该迭代器关联集合是否还有上一个元素;
Object previous(); 返回该迭代器的上一个元素;
Collection
|-----List:元素是有序的,元素可以重复存在,因为该集合体系有索引,判断元素是否相同,依据是元素的equals方法。
|------ArrayList:底层的数据结构是数组;特点:查询速度快,增删稍慢;线程不同步
|------LinkedList:底层的数据结构是链表;特点:增删速度快,查询稍慢;
|------Vector:底层是数组数据结构;线程同步,效率低;被ArrayList替代
ArrayList和Vector类都是基于数组实现的List类,Vector比较古老,被ArrayList取代了;ArrayList是线程不安全的,而Vector是线程安全的,但是还是推荐使用ArrayList;
获取线程安全的ArrayList对象:Collections类中的方法:static List synchronizedList(List list);返回线程安全的列表。
|-----Set:元素是无序的(存入和取出的顺序不一定一致),元素不可以重复
|------HashSet:底层数据结构是哈希表,线程不同步。
HashSet保证元素的唯一性是通过hashCode和equals方法来完成,如果元素的HashCode值相同,会判断equals是否为true,如果元素的HashCode值不同,不会调用 equals进行比较。
|------TreeSet:底层数据结构是二叉树,可以对Set集合中的元素进行排序
1、保证元素唯一性的依据是compareTo方法
2、排序-----自然排序
让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法
3、排序-----比较器排序
当元素不具备比较性,或者具备的比较性不是所需要的,这是可以自己定义比较器,实现Comparator接口,覆盖compare方法,然后将比较器对象作为参数传递 给TreeSet集合的构造函数。
Map
|------Hashtable:底层是哈希表数据结构,不可以存入null键null值,线程同步,效率低
|------HashMap:底层是哈希表数据结构,允许使用null键和null值,线程不同步,效率高
|------TreeMap:底层是二叉树数据结构,线程不同步,可以用于给map集合的键进行排序
遍历Map集合两种方式:
Map<Integer,String> m = new HashMap<Integer,String>();
m.put(1,"A");
m.put(2,"B");
m.put(3,"C");
//第一种方式
Set s = m.entrySet();
Iterator it = s.iterator();
while(it.hasNext()){
Map.Entry en = (Entry)it.next();
System.out.println(en.getKey()+":"+en.getValue());
}
//第二种方式
s = m.keySet();
it = s.iterator();
while(it.hasNext()){
int i = (int)it.next();
System.out.println(i+":"+m.get(i));
}
以上是关于java知识整理-----集合的主要内容,如果未能解决你的问题,请参考以下文章