前言:集合系列本来打算写得更详细的, 不过笔者发现网上优秀的资料已经很多了,再加上时间上的原因,就此结束。下面贴上这个系列的总结,感谢陪我一起复习的小伙伴。
原文出处:http://blog.csdn.net/u014158743/article/details/52629633
总结:
集合:可以存储不同类型的多个对象,随着存储对象的个数的增加而自动扩大容量
体系结构:
Collection<E>
|----List:存入的对象是有序的,且可以重复
ArrayList:底层使用的数据结构是数组,线程不安全的,查找速度快,增删速度慢
Vector:底层使用的数据结构是数组,线程安全的,查找速度快,增删速度慢
LinkedList:底层使用的数据结构是链表,线程不安全的,查找速度慢,增删速度快
|----Set:存入的对象是无序的,且不可以重复
HashSet:底层使用的数据结构是哈希表,线程不安全的
保证对象唯一的原理:
先判断hashCode()值,如果都不同就直接加入集合,如果哈希值相同了
在调用equals()方法,如果equals()方法返回值为true,则认为集合中存在
该对象,不加入集合
TreeSet:底层使用的数据结构是二叉树,线程不安全的
会对存入集合的对象进行排序
保证集合中对象唯一的方式:依据compareTo()或compare()的返回值是否为0
排序方式一:让存入集合中的对象具备可比较性
让存入集合中的对象所属的类实现Comparable<T>接口中的
int compareTo(T t) 方法
排序方式二:让集合具备排序功能
定义一个比较器,实现Comparator<T>接口中的 int compare(T t1,T t2)方法
把比较器对象作为参数传递给TreeSet<E>集合的构造方法
当集合中的对象具备可比较性,且存在比较器时,比较器优先被使用
|----Map<K,V>:一个单独的接口,存储的是键值对,键不可以重复,无序的
HashMap:保证键唯一的原理和HashSet一样,hashCode(),equals()
TreeMap:TreeMap是根据键来排序的,保证键唯一的原理和TreeSet相同,依据
compareTo()或compare()的返回值是否为0,为0就认为是重复键
Map的迭代方式有两种:
第一种:
Set<K> keys =map.keySet();
Iterator<K> ite = keys.iterator();
while(ite.hasNext())
{
K key = ite.next();
V value = map.get(key);
System.out.println(key+","+value);
}
第二种:
Set<Map.Entry<K,V>> entry = map.entrySet();
Iterator<Map.Entry<K,V>> ite = entry.iterator();
while(ite.hasNext())
{
Map.Entry<K,V> en = ite.next();
K key = en.getKey();
V value = en.getValue();
System.out.println(key+","+value);
}
工具类:Arrays
Collections
本系列结束,谢谢。