集合
Map接口概述及其成员方法 、Map接口与Collection接口的区别
import java.util.HashMap;/*Map接口概述将键映射到值的对象一个映射不能包含重复的键每个键最多只能映射到一个值举例:<K, V> 键值对1001 朱佳乐1001 刘生发(不允许)1002 朱佳乐在Map集合中,K的值不能重复。Map接口与Collection接口有什么区别?1、Map接口与Collection接口是平级的关系,不存在继承关系,都是属于util包下面的2、Map集合中存储的元素都是成对出现的,Map元素的键是唯一的,值是可以重复的键值对有其他的称呼:夫妻对3、Collection接口中的元素都是单独出现的,Collection接口下面有个子接口Set元素是唯一的List集合中的元素是可以重复的,像这样单独出现的元素,有其他的称呼:光棍添加功能:V put(K key, V value)将指定的值与该映射中的指定键相关联(可选操作)。举例:map.put(1001, "朱佳乐");删除功能:void clear()从该map中删除所有的映射(可选操作)。V remove(Object key)如果存在(从可选的操作),从该地图中删除一个键的映射判断功能:boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true 。boolean isEmpty()如果此map不包含键值映射,则返回 true 。获取功能:Set<Map.Entry<K,V>> entrySet()返回此map中包含的映射的Set视图。V get(Object key)返回到指定键所映射的值,或null如果此映射包含该键的映射。Set<K> keySet()返回此map中包含的键的Set视图。Collection<V> values()返回此地图中包含的值的Collection视图。长度功能:int size()返回此地图中键值映射的数量。*/public class MapDemo1 {public static void main(String[] args) {//创建一个Map集合对象HashMap<String, String> ssh = new HashMap<>();//添加元素//V put(K key, V value)将指定的值与该映射中的指定键相关联(可选操作)。//返回的是该键对应被覆盖之前的值//多次添加同一个key的映射的时候,key只有一个,值被覆盖。
// System.out.println(ssh.put("邓超", "孙俪"));//null
// System.out.println(ssh.put("邓超", "孙俪"));//孙俪
// System.out.println(ssh.put("邓超", "孙俪2"));//孙俪
// System.out.println(ssh.put("邓超", "孙俪3"));//孙俪3ssh.put("邓超", "孙俪");ssh.put("吴京", "谢楠");ssh.put("张杰", "谢娜");ssh.put("小虎", "冯提莫");System.out.println(ssh);System.out.println("===================================");//void clear()从该map中删除所有的映射(可选操作)。
// ssh.clear();
// System.out.println(ssh);//-{}System.out.println("===================================");//V remove(Object key)如果存在(从可选的操作),从该地图中删除一个键的映射//key不存在的时候不会报错//返回的是被删除的key对应的值,并且从map集合中移除System.out.println(ssh.remove("小虎"));System.out.println(ssh);//boolean containsKey(Object key)如果此映射包含指定键的映射,则返回true 。System.out.println("===================================");System.out.println(ssh.containsKey("邓超"));System.out.println(ssh.containsKey("小虎"));// boolean containsValue(Object value)如果此映射将一个或多个键映射到指定的值,则返回true 。System.out.println(ssh.containsValue("孙俪"));System.out.println(ssh.containsValue("冯提莫"));System.out.println("===================================");//boolean isEmpty()如果此map不包含键值映射,则返回 true 。System.out.println(ssh.isEmpty());//int size()返回此地图中键值映射的数量。System.out.println("map集合中的键值对个数:" + ssh.size());}
}
import java.util.Collection;
import java.util.HashMap;
import java.util.Set;/*Map集合的获取功能:V get(Object key)返回到指定键所映射的值,或null如果此映射包含该键的映射。Set<K> keySet()返回此map中包含的键的Set视图。Collection<V> values()返回此地图中包含的值的Collection视图。
*/public class MapDemo2 {public static void main(String[] args) {//创建map集合对象HashMap<String, String> ssh = new HashMap<>();//添加元素ssh.put("邓超", "孙俪");ssh.put("吴京", "谢楠");ssh.put("张杰", "谢娜");ssh.put("小虎", "冯提莫");//V get(Object key)返回到指定键所映射的值,或null如果此映射包含该键的映射。//如果map中不包含该键,返回的是nullSystem.out.println(ssh.get("邓超"));System.out.println("===================================");//Set<K> keySet()返回此map中包含的键的Set视图。Set<String> strings = ssh.keySet();for(String s : strings){System.out.println(s);}System.out.println("===================================");//Collection<V> values()返回此地图中包含的值的Collection视图。Collection<String> values = ssh.values();for (String s : values){System.out.println(s);}}
}
遍历Map集合的方式
import java.util.HashMap;
import java.util.Set;/*遍历map集合的方式1:根据键找值1、获取Map集合中所有映射的键的Set集合2、遍历键的集合,根据键找对应的值3、输出
*/public class MapDemo3 {public static void main(String[] args) {HashMap<String, String> ssh = new HashMap<>();//添加元素ssh.put("洛", "霞");ssh.put("卢锡安", "塞纳");ssh.put("蛮王", "艾希");ssh.put("盖伦", "卡特");ssh.put("卢锡安", "塞纳");//获取Map集合中所有映射的键的Set集合Set<String> keySet = ssh.keySet();for (String key : keySet) {String value = ssh.get(key);System.out.println(key + "---" + value);}}
}
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*遍历Map集合的方式2:根据键值对对象找键和值1、获取所有键值对的集合2、遍历获取每一个键值对,得到每一个键值对对象3、根据获取到的每一个键值对对象,来进一步获取键和值
*/public class MapDemo4 {public static void main(String[] args) {HashMap<String, String> ssh = new HashMap<>();//添加元素ssh.put("洛", "霞");ssh.put("卢锡安", "塞纳");ssh.put("蛮王", "艾希");ssh.put("盖伦", "卡特");ssh.put("卢锡安", "塞纳");//获取所有键值对的集合Set<Map.Entry<String, String>> entries = ssh.entrySet();for (Map.Entry<String, String> keyValue : entries) {//HashMap中重写了getKey()和getValue()方法String key = keyValue.getKey();String value = keyValue.getValue();System.out.println(key + "---" + value);}}
}
HashMap的概述及案例
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*HashMap类概述键是哈希表结构,可以保证键的唯一性HashMap案例HashMap<Integer,String>
*/public class MapDemo5 {public static void main(String[] args) {//创建Map集合对象HashMap<Integer, String> map = new HashMap<>();map.put(1001, "朱佳乐");map.put(1002, "刘生发");map.put(1003, "张咪");map.put(1004, "吕常福");//遍历集合System.out.println("=======方式1:根据键找值========");Set<Integer> keys = map.keySet();for (Integer key : keys) {String value = map.get(key);System.out.println(key + "---" + value);}System.out.println("=======方式2:根据键值对找键和值========");Set<Map.Entry<Integer, String>> keyValue = map.entrySet();for (Map.Entry<Integer, String> kv : keyValue) {Integer key = kv.getKey();String value = kv.getValue();System.out.println(key + "---" + value);}}
}
import java.util.Objects;public class Student4 {private String name;private int age;public Student4() {}public Student4(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student4 student4 = (Student4) o;return age == student4.age &&Objects.equals(name, student4.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*HashMap<String,Student>
*/
public class MapDemo6 {public static void main(String[] args) {//创建map集合对象HashMap<String, Student4> map = new HashMap<>();//创建4个学生对象Student4 s1 = new Student4("朱佳乐", 18);Student4 s2 = new Student4("刘生发", 17);Student4 s3 = new Student4("张咪", 19);Student4 s4 = new Student4("张梦云", 19);//向map集合中添加键值对map.put("帅气男孩", s1);map.put("亿气风发", s2);map.put("犹抱琵琶半遮面", s3);map.put("仙女下凡", s4);//获取键值对遍历Set<Map.Entry<String, Student4>> entries = map.entrySet();for (Map.Entry<String, Student4> keyValue : entries) {String key = keyValue.getKey();Student4 value = keyValue.getValue();System.out.println(key + "---" + value);}}
}import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*HashMap<Student,String>
*/public class MapDemo7 {public static void main(String[] args) {HashMap<Student4, String> map = new HashMap<>();//创建学生对象Student4 s1 = new Student4("貂蝉", 17);Student4 s2 = new Student4("西施", 18);Student4 s3 = new Student4("杨玉环", 16);Student4 s4 = new Student4("王昭君", 19);Student4 s5 = new Student4("貂蝉", 17);//将元素添加到集合中map.put(s1, "1111");map.put(s2, "2222");map.put(s3, "3333");map.put(s4, "4444");map.put(s5, "5555");//遍历Set<Map.Entry<Student4, String>> entries = map.entrySet();for (Map.Entry<Student4, String> kv : entries) {Student4 key = kv.getKey();String value = kv.getValue();System.out.println(key + "---" + value);}}
}
LinkedHashMap
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;/*LinkedHashMap:public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>哈希表和链表实现的Map接口,具有可预测的迭代次序。哈希表保证元素的唯一,保证的是key的唯一链表保证的是有序,存储和取出的顺序一致。*/public class LinkedHashMapDemo {public static void main(String[] args) {LinkedHashMap<String, String> linkedMap = new LinkedHashMap<>();//添加元素到集合中linkedMap.put("3213", "hello");linkedMap.put("1234", "world");linkedMap.put("3456", "java");linkedMap.put("1234", "hadoop");linkedMap.put("3456", "spark");linkedMap.put("4567", "hello");//遍历Set<Map.Entry<String, String>> entries = linkedMap.entrySet();for (Map.Entry<String, String> kv : entries) {String key = kv.getKey();String value = kv.getValue();System.out.println(key + "---" + value);}}
}
TreeMap的概述及案例
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;/*TreeMap类概述键是红黑树结构,可以保证键的排序和唯一性TreeMap案例TreeMap<String,String>
*/
public class TreeMapDemo1 {public static void main(String[] args) {//创建集合对象TreeMap<String, String> map = new TreeMap<>();//添加元素到集合中map.put("hello", "你好");map.put("java", "面向对象编程的语言");map.put("hadoop", "适合海量数据存储的分布式计算和分布式存储的平台");map.put("hive", "是数据仓库建模工具之一");map.put("java", "面向对象编程的语言2");//遍历Set<Map.Entry<String, String>> entries = map.entrySet();for (Map.Entry<String, String> kv : entries) {String key = kv.getKey();String value = kv.getValue();System.out.println(key + "--" + value);}}
}
import java.util.Objects;public class Student4 {private String name;private int age;public Student4() {}public Student4(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Student4 student4 = (Student4) o;return age == student4.age &&Objects.equals(name, student4.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}
}import java.util.Comparator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;/*TreeMap<Student,String>键:Student值:String
*/public class TreeMapDemo2 {public static void main(String[] args) {//创建TreeMap对象TreeMap<Student4, String> map = new TreeMap<>(new Comparator<Student4>() {@Overridepublic int compare(Student4 o1, Student4 o2) {//年龄int i = o1.getAge()-o2.getAge();//姓名int i2 = i == 0 ? o1.getName()pareTo(o2.getName()) : i;return i2;}});//创建学生对象Student4 s1 = new Student4("唐伯虎", 18);Student4 s2 = new Student4("祝枝山", 19);Student4 s3 = new Student4("朱佳乐", 20);Student4 s4 = new Student4("杨旭", 17);Student4 s5 = new Student4("唐伯虎", 18);//添加元素到集合中map.put(s1, "唐伯虎点秋香");map.put(s2, "小鸡吃米图");map.put(s3, "水淹电脑");map.put(s4, "申报才子");map.put(s5, "唐伯虎点秋香");//遍历Set<Map.Entry<Student4, String>> entries = map.entrySet();for (Map.Entry<Student4, String> entry : entries) {Student4 key = entry.getKey();String value = entry.getValue();System.out.println(key + "---" + value);}}
}