集合
List和Map、Set的区别:
List中储存的数据是有顺序的,并且允许重复
Map中储存的数据是无顺序的,其键不能重复,值可以重复
Set中储存的数据是无序的,并且不允许有重复
List子类的特点:
ArrayList:底层结构是数组,非线程安全,查询快,增删慢
LinkedList:底层结构是链表型,非线程安全,增删快,查询慢
Voctor:底层结构是数组,线程安全,增删慢,查询慢
Map子类的特点:
HashMap:非线程安全,高效,键值允许为Null,不允许键值重复
HashTable:线程安全,低效,键和值都不允许为Null
LinkedHashMap:是HashMap的一个子类,记录了插入顺序
HashMap和HashTable的区别:
HashMap:非线程安全,性能好,效率高,键值允许为Null,不允许键值重复
HashTable:线程安全,性能差,效率低,键和值都不允许为Null
Set子类的特点:
HashSet:底层由HashMap实现,不允许集合中有重复的值
LinkedHashSet:继承于HashSet,同时又基于LinkedHashMap实现,底层使用 的是LinkedHashMap
集合工具类:
包:java.utils.Collections
1.往集合中添加一些元素:public static boolean addAll(Collection c, T… elements)
例子:
2.在集合中按照默认规则进行排序:public static void sort(List list)
例子:
输出结果:
Map的用法:
Map集合是一个双列集合
无法通过迭代器和增强for来遍历
添加元素:V put(K key,V value)
删除元素:V remove(Object key)
根据指定的键获取相应的值:V get(Object key) 方法
判断指定的键是否存在:boolean containsKey(Object key)
Map的遍历:
用键值对遍历Map集合:使用接口 Set<Map.Entry<K,V>>
用键找值得方法遍历:先通过Set keySet();找到元素的值,再通过Map集合中的V get(Object key) 方法获得键对应的值