首先,我们想什么集合:其实就是存储相同对象的容器,它和数组是一样的,但是数组存储对象长度固定,使用有局限,而集合就没有这个局限
集合这个容器包括两大类:collection接口和map接口,他们一个是单个数值,另一个存的是key和value两项,这两项存在映射关系
这两大类下面又包括各个容器,就像不同形状的杯子一样,有各自的特点,
关于collection接口:
1list是有序的,可以重复的,存入取出顺序一样
下面有ArrayList 底层是数组结构,增删速度快,查询速度慢
LinkedList 底层是链表结构,查询速度快,增删速度慢
Vector 底层是数组结构,它是jdk1.1版本的,速度比ArrayList慢,已被它取代。
2set是无序的,不可以重复,存入取出顺序不一样
HashSet:数据结构是哈希表。线程是非同步的。
保证元素唯一性的原理:判断元素的hashCode值是否相同。
如果相同,还会继续判断元素的equals方法,是否为true。
TreeSet:可以对Set集合中的元素进行排序。
底层数据结构是二叉树。
保证元素唯一性的依据:
compareTo方法return 0.
TreeSet排序的第一种方式:让元素自身具备比较性。
元素需要实现Comparable接口,覆盖compareTo方法。
这种方式也称为元素的自然顺序,或者叫做默认顺序。
TreeSet的第二种排序方式。
当元素自身不具备比较性时,或者具备的比较性不是所需要的。
这时就需要让集合自身具备比较性。
在集合初始化时,就有了比较方式。
1,添加add(e); addAll(collection);
2,删除 remove(e);removeAll(collection);clear();
3,判断。contains(e);isEmpty();
4,获取iterator();size();
5,获取交集。retainAll();
6,集合变数组。toArray()
Map
Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0.效率低。
HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代,jdk1.2.效率高。
TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
Map集合:该集合存储键值对。一对一对往里存。而且要保证键的唯一性。
1,添加。put(K key, V value) putAll(Map<? extends K,? extends V> m)
2,删除。clear() remove(Object key)
3,判断。containsValue(Object value) containsKey(Object key) isEmpty()
4,获取。get(Object key) size() values() entrySet() keySet()
|
|