集合-----双列
Map
双列集合图解:
Map集合概述:
- Interface Map<K,V> K :键的数据类型; V :值得数据类型
- 键不能重复,值可以重复
- 键和值是一一对应的,通过键只能找到自己对应的值
- 每一对键值被称为键值对或者Entry对象
Map集合简单添加代码如下:
public static void main(String[] args) { Map<String, String> map = new HashMap<>(); map.put("001", "小美"); String s1 = map.put("002", "小明"); map.put("003", "小刚"); map.put("004", "小强"); map.put("005", "大壮"); System.out.println(s1); String s = map.put("001", "大壮");//如果添加的元素的键值已经存在那么 // 会将原来的值替换成新的值,并将原来的值返回, // 如果添加的键值不存在,则直接添加,返回值为null System.out.println(s); System.out.println(map); }
运行结果如下:
Map集合的删除代码如下:
Map<String, String> map = new HashMap<>(); map.put("001", "小美"); map.put("002", "小明"); map.put("003", "小刚"); map.put("004", "小强"); map.put("005", "大壮"); String s = map.remove("001");//返回删除元素的值 System.out.println(s); System.out.println(map); }
运行结果如下:
Map集合移除所有元素的方法:
1 Map<String, String> map = new HashMap<>(); 2 map.put("001", "小美"); 3 map.put("002", "小明"); 4 map.put("003", "小刚"); 5 map.put("004", "小强"); 6 map.put("005", "大壮"); 7 map.clear();//删除所有键值对对象 8 System.out.println(map); 9 10 11 }
运行结果如下:
Map集合判断是否存在指定Key值:
代码如下:
1 public static void main(String[] args) { 2 Map<String, String> map = new HashMap<>(); 3 map.put("001", "小美"); 4 map.put("002", "小明"); 5 map.put("003", "小刚"); 6 map.put("004", "小强"); 7 map.put("005", "大壮"); 8 boolean b1= map.containsKey("001");//判断集合中是否存在指定的Key值,并返回boolean值 9 boolean b2 = map.containsKey("009"); 10 System.out.println(b1); 11 System.out.println(b2); 12 13 }
运行结果:
Map集合判断是否存在指定值:
代码如下:
1 public static void main(String[] args) { 2 Map<String, String> map = new HashMap<>(); 3 map.put("001", "小美"); 4 map.put("002", "小明"); 5 map.put("003", "小刚"); 6 map.put("004", "小强"); 7 map.put("005", "大壮"); 8 boolean b1 = map.containsValue("小美"); 9 boolean b2 = map.containsValue("小小");//判断是否存在指定的值,并返回boolean值 10 System.out.println(b1); 11 System.out.println(b2); 12 13 }
运行结果:
Map集合判断集合是否为空
代码如下:
1 public static void main(String[] args) { 2 Map<String, String> map = new HashMap<>(); 3 map.put("001", "小美"); 4 map.put("002", "小明"); 5 map.put("003", "小刚"); 6 map.put("004", "小强"); 7 map.put("005", "大壮"); 8 boolean empty = map.isEmpty();//判断Map集合是否为空 9 map.clear(); 10 boolean empty1 = map.isEmpty(); 11 System.out.println(empty); 12 System.out.println(empty1); 13 14 }
运行结果:
获得Map集合的键值对个数
代码如下:
1 Map<String, String> map = new HashMap<>(); 2 map.put("001", "小美"); 3 map.put("002", "小明"); 4 map.put("003", "小刚"); 5 map.put("004", "小强"); 6 map.put("005", "大壮"); 7 int size = map.size();//获得Map集合的键值对个数 8 System.out.println(size); 9 }
运行结果:
Map集合的两种遍历方式:
第一种:使用keySet();方法获得存储所有键的Set集合然后用get();方法获得制定键对应的值
代码如下:
1 public static void main(String[] args) { 2 Map<String, String> map = new HashMap<>(); 3 map.put("001", "小美"); 4 map.put("002", "小明"); 5 map.put("003", "小刚"); 6 map.put("004", "小强"); 7 map.put("005", "大壮"); 8 Set<String> set = map.keySet();//keySet();获得所有的键的Set集合 9 for (String s : set) { 10 String s1 = map.get(s);//get();方法获得指定键的值 11 System.out.println(s+" "+s1); 12 } 13 }
运行结果为:
第二种:首先使用entrySet();方法获得所有的键值对对象,然后根据对象使用getKey();和
getValue();方法获得键和值;
代码如下:
1 public static void main(String[] args) { 2 Map<String, String> map = new HashMap<>(); 3 map.put("001", "小美"); 4 map.put("002", "小明"); 5 map.put("003", "小刚"); 6 map.put("004", "小强"); 7 map.put("005", "大壮"); 8 Set<Map.Entry<String, String>> entries = map.entrySet();//获得所有的键值对对象 9 for (Map.Entry<String, String> entry : entries) { 10 String key = entry.getKey();//获得key值 11 String value = entry.getValue();//获得Value值 12 System.out.println(key+" "+value); 13 } 14 }
结果如下:
HashMap(底层是hash表结构)
(hash表在数据结构中解释)
HashMap集合如果要存储自定义类对象必须要重写equals();和hashCode();方法
TreeMap(底层是红黑树)
(红黑树在数据结构中解释)
TreeMap集合自定义对象要使用自然排序或者比较器排序重写其中的方法。只对键进行排序
迎风少年