Map类
Posted java-jiangtao-home
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map类相关的知识,希望对你有一定的参考价值。
package map; public class differentDemo { /** * map和Collection集合的区别 * map集合是键值对的集合 Collection是单一出现数据的聚合 * Map的键是唯一的,而collection的子接口List集合中的元素是可以重复的,set是唯一的 * map是夫妻对,collection是光棍 */ }
package map; import java.util.HashMap; import java.util.Map; public class MapDemo1 { public static void main(String[] args) { /** * Map的特点: * 数据成对出现 * 数据的键是唯一的 * 一个键只能对应一个值 * 值可以重复 * 键允许一个为空,值可以多个是空 * 方法: * put() * putAll() * remove() * clear() * * get() * Set<k> keySet * * 判断功能: * containsKey() * containsValue() * isEmpty() * * * 遍历方式: * Set<Entry<String,Person>> entry = map.entrySet(); * for(Entry<String,Person> sp:entry){ * String key = sp.getKey(); * Person value = sp.getValue(); * System.out.println("键:"+key+" 值:"+value); * * } * HashMap: * * HashMap是map的实现类 * 允许多个null值和null键 * Hashmap中的元素没有顺序 * hashmap不是线程安全的 * Map<String,String> map = new HashMap<String,String>(); * map = Collections.synchronizedMap(map); * 这样就变成了线程安全的 * * Treemap: * 可以进行自然排序 * 可以创建comparetor进行排序,可以重写compareto进行排序 * * key不能为null,不能重复 * * * HashTable: * 不允许有任何null值和null键 * * HashTable中的元素没有顺序 * 是线程安全的 * * LinkedHashMap: * * 有顺序, * 允许多个null值和null键 * 不是线程安全的 * * * */ Map<String,String> map = new HashMap<String,String>(); map.put("鼓上蚤","时迁"); map.put("行者","武松"); //键是唯一的,如果有俩会存在覆盖的情况 map.put("行者","武大郎"); } }
package practice; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class Demo1 { public static void main(String[] args) { /** * map的特点: 1.数据成对出现 2.数据的键是唯一的,如果有相同的会被覆盖的 3.一个键只能有一个值 4.值可以重复 * 5.键允许有一个为空,值可以多个是空,有一个null可以对应,有两个null就无法正确对应了 */ Map<String, String> map = new HashMap<String, String>(); map.put("鼓上蚤", "时迁"); map.put("行者", "武松"); map.put("及时雨", "宋江"); map.put("呼保义", "宋江"); map.put(null, "无用"); map.put("晓晓", null); map.put("螃蟹", null); // 只能有一个null键,否则,会被覆盖 // map.put(null, "无1用"); System.out.println(map); Map<String, String> map1 = new HashMap<String, String>(); map1.put("花和尚", "鲁智深"); map1.put("青面兽", "杨志"); // 一个map添加到另一个map中 map.putAll(map1); System.out.println(map); // 清空map map1.clear(); System.out.println(map1); // 删除一个键值对 map.remove("青面兽"); // 通过对应的键来获取值 System.out.println(map); // 通过get来获取键值对 如果没有相应的键就返回null String a = map.get("花和尚"); System.out.println(a); Set<String> set = map.keySet(); //这里输出的是所有的键 System.out.println(set); for(String key:set) { //根据当前的key来获得value String value = map.get(key); System.out.println(value); } Map<String,Person> map2 = new HashMap<String,Person>(); map2.put("3", new Person(1,"阿彪",1)); map2.put("2", new Person(1,"拖拉机",2)); System.out.println(map2); //是否包含某个值 boolean iscon = map.containsKey("花和尚"); System.out.println(iscon); boolean isval = map.containsValue("鲁智深"); System.out.println(isval); boolean isval1 = map2.containsValue(new Person(1,"阿彪",1)); System.out.println(isval1); Set<Entry<String, String>> entry = map.entrySet(); for(Entry<String, String> et : entry) { //for循环中自己定义的那个就是元素 String key1 = et.getKey(); String value1 = et.getValue(); System.out.println("键: "+key1+" 值:"+value1); } } }
package practice; import java.util.HashMap; import java.util.Map; public class HashMapDemo { public static void main(String[] args) { /** * map的实现类HashMap * 1.允许多个null值和一个null键 * 2.HashMap中的元素没有顺序(跟添加的顺序无关) * 3.HashMap不是线程安全的 */ Map<String,String> map = new HashMap<String,String>(); map.put("鼓上蚤", "时迁"); map.put("呼保义", "宋江"); map.put("及时雨", "宋江"); map.put("行者", "武松"); System.out.println(map); } }
package practice; public class HashtableDemo { /** * 不允许有null值和null键 */ }
package practice; public class HashtableDemo { /** * 不允许有null值和null键 */ }
package practice; public class Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [age=" + age + ", name=" + name + ", gender=" + gender + "]"; } public Person(int age, String name, int gender) { super(); this.age = age; this.name = name; this.gender = gender; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + gender; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if(!(obj instanceof Person)) { return false; } Person p = (Person)obj; if(this.age == p.age&&this.gender==p.gender &&this.name!=null&&p.name!=null&this.name.equals(p.name)) { return true; } else { return false; } } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getGender() { return gender; } public void setGender(int gender) { this.gender = gender; } private int gender; }
package practice; public class TreeMap { /** * 有自然排序 */ }
以上是关于Map类的主要内容,如果未能解决你的问题,请参考以下文章