Java 集合框架_下
Map接口
特点:
【1】Map接口称为键值对集合或者映射集合,其中的元素(entry)是以键值对(key-value)的形式存在。
【2】Map 容器接口中提供了增、删、改、查的方式对集合进行操作。
【3】Map接口中都是通过key来操作键值对,一般key是已知。通过key获取value。
Map接口的实现类HashMap、LinkedHashMap、TreeMap
1.1 HashMap
【1】HashMap 是Map的实现类,key以HashSet存储。
【2】HashMap 线程不安全,jdk1.2;Hashtable是HashMap的线程安全版本,jdk1.0
【3】 向HashMap中存储元素时,key一定要实现hashCode和equals
【4】一般建议使用String作为Map接口的key
1.2 LinkedHashMap
【1】LinkedHashMap是Map接口的实现类,key以LinkedHashSet存储。哈希表散列key,链表维持key的添加顺序。
1.3 TreeMap
【1】TreeMap是Map的实现类,key以TreeSet存储。
public static void main(String[] args) { /*TreeMap<String, Object> map = new TreeMap<String,Object>(new Comparator<String>() { @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } }); ArrayList<String> list2 = new ArrayList<String>(); list2.add("ben"); list2.add("bill"); map.put("Aa", list2); ArrayList<String> list1 = new ArrayList<String>(); list1.add("alex"); list1.add("alice"); list1.add("allen"); map.put("B", list1); System.out.println(map);*/ TreeMap<Student, Object> map = new TreeMap<Student,Object>(new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o1.getAge() - o2.getAge(); } }); ArrayList<String> list1 = new ArrayList<String>(); list1.add("alex"); list1.add("alice"); list1.add("allen"); Student s1 = new Student("001", "大狗", 20); map.put(s1, list1); ArrayList<String> list2 = new ArrayList<String>(); list2.add("ben"); list2.add("bill"); Student s2 = new Student("001", "2狗", 20); // 修改 map.put(s2, list2); System.out.println(map); }
1.1 总结