Map接口,HashMap,LinkHashMap,TreeMap

1.1 Map接口

Map接口称为键值对集合或者映射集合其中的元素(entry)键值对(key-value)的形式存在

Map 容器接口中提供了增、删、改、查的方式对集合进行操作。

Map接口中都是通过key来操作键值对,一般key是已知。通过key获取value

1.1.1 map常用方法

public static void main(String[] args) {

 

/**

 * :put/putAll

 * :clear/remove

 * :put

 * :get/containsKey/containsValue

 * 其他:isEmpty/size

 */

 

Map<String, String> map = new HashMap<String,String>();

 

// 1put

map.put("A", "apple");

map.put("B", "banana");

map.put("C", "coco");

 

// 2】删除

// map.clear();

// smap.remove("A");

 

// 3】修改

//map.put("A", "apple x");

 

// 4】查看

String val = map.get("A");

System.out.println(map.containsKey("D"));

 

 

System.out.println(map);

}

 

1.1.2 map接口的遍历

 

通过keySet() 返回mapset集合

public static void main(String[] args) {

 

Map<String, String> map = new HashMap<String,String>();

 

map.put("B", "banana");

map.put("A", "apple");

map.put("C", "coco");

// map无序

// 可以根据key的自然顺序 让map有序  => 一般用string作为key

System.out.println(map);

 

 

// 遍历

Set<String> keys = map.keySet();

for (String key : keys) {

System.out.println(key+"=>"+map.get(key));

}

 

Iterator<String> it = keys.iterator();

while(it.hasNext()) {

String key = it.next();

System.out.println(key+"=>"+map.get(key));

}

}

 

map中以键值对作为元素,键值对map中称为entry,entrySet返回键值对的set集合。

public static void main(String[] args) {

 

Map<String, String> map = new HashMap<String,String>();

 

map.put("B", "banana");

map.put("A", "apple");

map.put("C", "coco");

// map无序

// 可以根据key的自然顺序 让map有序  => 一般用string作为key

System.out.println(map);

 

// entrySet

Set<Entry<String, String>> entrySet = map.entrySet();

for (Entry<String, String> entry : entrySet) {

System.out.println(entry.getKey()+"=>"+entry.getValue());

}

 

Iterator<Entry<String, String>> it2 = entrySet.iterator();

while(it2.hasNext()) {

Entry<String, String> entry = it2.next();

System.out.println(entry.getKey()+"=>"+entry.getValue());

}

}

 

Map接口的实现类HashMapLinkedHashMapTreeMap

 

1.2 HashMap

HashMap 是Map的实现类,keyHashSet存储。

 

public static void main(String[] args) {

 

/*

HashMap<String, Object> map = new HashMap<String,Object>();

 

ArrayList<String> list1 = new ArrayList<String>();

list1.add("alex");

list1.add("alice");

list1.add("allen");

map.put("A", list1);

 

 

ArrayList<String> list2 = new ArrayList<String>();

list2.add("ben");

list2.add("bill");

map.put("B", list2);

 

System.out.println(map);

*/

 

 

HashMap<Student, Object> map = new HashMap<Student,Object>();

 

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", "大狗", 20);

// 修改

map.put(s2, list2);

System.out.println(map);

 

}

 

总结:

[1] 向HashMap中存储元素时,key一定要实现hashCodeequals

[2] 一般建议使用String作为Map接口key

 

1.3 LinkedHashMap

LinkedHashMapMap接口的实现类,keyLinkedHashSet存储。

哈希表散列key,链表维持key的添加顺序。

 

public static void main(String[] args) {

 

 

/*LinkedHashMap<String, Object> map = new LinkedHashMap<String,Object>();

 

ArrayList<String> list2 = new ArrayList<String>();

list2.add("ben");

list2.add("bill");

map.put("B", list2);

 

ArrayList<String> list1 = new ArrayList<String>();

list1.add("alex");

list1.add("alice");

list1.add("allen");

map.put("A", list1);

 

System.out.println(map);*/

 

 

 

HashMap<Student, Object> map = new HashMap<Student,Object>();

 

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", "大狗", 20);

// 修改

map.put(s2, list2);

System.out.println(map);

 

}

 

 

1.4 TreeMap

TreeMapMap的实现类,keyTreeSet存储。

 

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);

 

}

posted @ 2019-05-05 20:09  御云凌月  阅读(185)  评论(0编辑  收藏  举报