一、HashMap集合
1.HashMap示意图
2.HashMap的特点
3.HashMap的常用方法
①.put(K key, V value) 将键(key)/值(value)映射存放到Map集合中
public class Test {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<String, Integer>();map.put("Tom", 100);//向HashMap中添加元素 }
}
②.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null,即获取key对应的value。
public class Test {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<String, Integer>();map.put("Tom", 100);map.put("Tom", 0);int score = map.get("Tom");// 获取key对应的valueSystem.out.println(score);// key不允许重复,若重复,则覆盖已有key的value}
}
可知,之前加入的value已被覆盖,前面的观点得证
③. size() 返回Map集合中数据数量,准确说是返回key-value的组数。
public class Test {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<String, Integer>();map.put("Tom", 100);map.put("Jim", 90);map.put("Sam", 91);System.out.println(map.size());}
}
④:clear() 清空Map集合
public class Test {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<String, Integer>();map.put("Tom", 100);map.put("Jim", 90);map.put("Sam", 91);map.clear();// 清空map中的key-valueSystem.out.println(map.size());}
}
⑤:isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false
public class Test {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<String, Integer>();map.put("Tom", 100);map.put("Jim", 90);map.put("Sam", 91);map.clear();// 清空map中的key-valueSystem.out.println(map.isEmpty());}
}
⑥:remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。
public class Test {public static void main(String[] args) {HashMap<String, Integer> map = new HashMap<String, Integer>();map.put("Tom", 100);map.put("Jim", 90);map.put("Sam", 91);map.remove("Tom");System.out.println(map);}
}
⑦:containsKey(Object key) Hashmap判断是否含有key
public class Test {public static void main(String[] args) {HashMap<String, Integer> map=new HashMap<>();/*boolean*///判断map中是否存在这个keySystem.out.println(map.containsKey("DEMO"));//falsemap.put("DEMO", 1);System.out.println(map.containsKey("DEMO"));//true}
}
⑧:containsValue(Object value) Hashmap判断是否含有value:
public class Test {public static void main(String[] args) {HashMap<String, Integer> map=new HashMap<>();/*boolean*///判断map中是否存在这个valueSystem.out.println(map.containsValue(1));//falsemap.put("DEMO", 1);System.out.println(map.containsValue(1));//true}
}
⑨:Hashmap添加另一个同一类型的map下的所有数据
public class Test {public static void main(String[] args) {HashMap<String, Integer> map=new HashMap<>();HashMap<String, Integer> map1=new HashMap<>();/*void*///将同一类型的map添加到另一个map中map1.put("DEMO1", 1);map.put("DEMO2", 2);System.out.println(map);//{DEMO2=2}map.putAll(map1);System.out.println(map);//{DEMO1=1, DEMO2=2}}
}
⑩:Hashmap替换这个key的value
public class Test {public static void main(String[] args) {HashMap<String, Integer> map=new HashMap<>();/*value*///判断map中是否存在这个keymap.put("DEMO1", 1);map.put("DEMO2", 2);System.out.println(map);//{DEMO1=1, DEMO2=2}System.out.println(map.replace("DEMO2", 1));//2System.out.println(map);//{DEMO1=1, DEMO2=1}}
}
二、TreeMap集合
1.TreeMap的特点
2.TreeMap基本使用
TreeMap中的元素默认按照keys的自然排序排列。
①:使用无参构造器创建对象
对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序。
public static void main(String[] args) {Map<String, Integer> map = new TreeMap<>();map.put("orange", 1);map.put("apple", 2);map.put("pear", 3);System.out.println(map);
}
public static void main(String[] args) {Map<Integer, String> map = new TreeMap<>();map.put(3, "val");map.put(2, "val");map.put(1, "val");map.put(5, "val");map.put(4, "val");System.out.println(map);
}
②:Comparable接口
使用TreeMap时,放入的Key必须实现Comparable接口。String、Integer这些类已经实现了Comparable接口,因此可以直接作为Key使用。作为Value的对象则没有任何要求。
如果作为Key的class没有实现Comparable接口,那么,必须在创建TreeMap时同时指定一个自定义排序算法:
public class Main {public static void main(String[] args) {Map<Person, Integer> map = new TreeMap<>(new Comparator<Person>() {public int compare(Person p1, Person p2) {return p1.name.compareTo(p2.name);}});map.put(new Person("Tom"), 1);map.put(new Person("Bob"), 2);map.put(new Person("Lily"), 3);for (Person key : map.keySet()) {System.out.println(key);}// {Person: Bob}, {Person: Lily}, {Person: Tom}System.out.println(map.get(new Person("Bob"))); // 2}
}class Person {public String name;Person(String name) {this.name = name;}public String toString() {return "{Person: " + name + "}";}
}