List 有序,可以存储重复元素,有索引。
ArrayList
底层是数组结构,线程不安全,效率高,查询快,增删慢。
LinkedList
底层是链表结构,线程不安全,效率高,增删快,查询慢。
Vector
底层是数组结构,线程安全,效率低,查询快(没有ArrayList快),增删慢(比ArrayList还慢)。
Set
HashSet
存储无序,底层是哈希表结构(hash算法),元素唯一,通过重写hashCode方法和equals方法来实现元素唯一。
LinkedHashSet 存储有序
TreeSet
存储无序,底层是二叉树结构,元素唯一,元素排序,通过两种方式:1.让存储的对象对应的类实现自然排序接口,重写comparaTo方法
2.在创建集合对象时,传递一个比较器,重写compara方法
普通for循环加上get()方法
通过迭代器来遍历
增强for循环
Map 存储 键 值
HashMap
键唯一,保证键唯一需要重写键对应类的hashCode方法和equals方法。
LinkedHashMap
底层是链表实现的可以保证怎么存就怎么取
TreeMap
键唯一,根据其键的自然顺序进行排序(键对应的类实现自然排序接口 Comparable 接口),
或者根据集合时的 Comparator 进行排序(比较器)。
a:添加功能
V put(K key,V value):添加元素。
如果键是第一次存储,就直接存储元素,返回null
如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值
b:删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素,并把值返回
c:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
d:获取功能
Set<Map.Entry<K,V>> entrySet():
V get(Object key):根据键获取值
Set<K> keySet():获取集合中所有键的集合
Collection<V> values():获取集合中所有值的集合
e:长度功能
int size():返回集合中的键值对的个数
HashMap和Hashtable的区别
Hashtable是JDK1.0版本出现的,是线程安全的,效率低,
HashMap是JDK1.2版本出现的,是线程不安全的,效率高
Hashtable不可以存储null键和null值,
HashMap可以存储null键和null值
Collections 集合工具类
public static <T> void sort(List<T> list) 排序,T必须是实现自然排序接口的类
public static <T> int binarySearch(List<?> list,T key) 二分查找
public static <T> T max(Collection<?> coll) 获取最大值,或者是排序后最后一个值
public static void reverse(List<?> list) 集合反转
public static void shuffle(List<?> list) 随机置换
<? extends E> :E或者E的子类
<? super E> :E类型或者E的父类
|
|