Java~Map的基本使用与Map的三种遍历方式、Set的基本使用
概念模型:
一般把搜索的数据称为关键字(key),和关键字对应的称为值(value),所以就会出现俩种模型
- 纯key模型,即是我们的Set要解决的事情,只需判断关键字在不在集合即可,没有关联的value。
- Key-Value模型,即我们的Map要解决的事情,需要指定Key找到关联的Value。
在介绍Map之前先先介绍–条目(Entry)
- Map.Entry
即Map中定义的K类型的Key,和V类型的value的映射关系的类 。 - 常见方法: getKey()返回key 和getValue()返回value
for (Map.Entry<String, Student> m : map.entrySet()) {System.out.println(m.getKey() + ":" + m.getValue());}
下面Map使用此自定义类型:
class Student {public String name;public int agg;public String garde;public String schlool;static void h() {System.out.println("hh");}public Student(String name, int agg, String garde, String schlool) {this.name = name;this.agg = agg;this.garde = garde;this.schlool = schlool;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", agg=" + agg +", garde='" + garde + '\'' +", schlool='" + schlool + '\'' +'}';}
}
Map的常用使用方法:
- Map的实例化
Map<String, Student> map = new HashMap<>();
- 设置key对应的value(要注意key是不可重复的,如果重复,后面来的value会覆盖前面的value)
Student student = new Student("Listen", 20, "001", "Happy");Student student1 = new Student("Listen", 30, "002", "Day");Student student2 = new Student("Byke", 40, "003", "Sun");Student student3 = new Student("Frake", 50, "004", "Mane");map.put(student.name, student);//如果有相同的key,新的value会覆盖旧的valuemap.put(student.name, student);map.put(student1.name, student1);map.put(student2.name, student2);map.put(student3.name, student3);
- 返回key对于的value
String name = "Listen";Student ret = map.get(name);
- 返回key对于的value,如果key不存在,返回默认值
map.getOrDefault("mm", new Student("mm", 50, "009", "shine"))
- 删除key对应的映射关系
map.remove(name);
- 返回所有key的不重复集合
Set<String> set = map.keySet();
- 返回所有value的可重复集合
Collection<Student> collections = map.values();
- 返回所有的key-value映射关系
Set<Map.Entry<String, Student>> set1 = map.entrySet();
- 判断是否有可以 或者判断是否有value
boolean containsKey(Object key);
boolean containsValue(Object value);
- Map的遍历方式
//遍历mapfor (Map.Entry<String, Student> m : map.entrySet()) {System.out.println(m.getKey() + ":" + m.getValue());}
//用迭代器遍历mapSystem.out.println("=============");Iterator<Map.Entry<String, Student>> iterator = map.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<String, Student> entry = iterator.next();System.out.println(entry.getKey() + ":" + entry.getValue());}//返回所有map的映射关系,并将它变成set里的keySet<Map.Entry<String, Student>> set1 = map.entrySet();//然后遍历set
Map最常用的地方-统计
Map<Integer, Integer> map = new TreeMap<>();for(int i : nums) {Integer tmp = map.get(i);if(tmp == null) {map.put(i,1);}else {map.put(i,tmp + 1);}}//第二种方法Map<Integer, Integer> map = new TreeMap<>();for(int i : nums) {map.put(i,map.getOrDefault(i,0) + 1);}}
Set的使用:
- 添加元素,但重复元素不会添加成功
Set<String> set = new TreeSet<>();set.add("aaa");set.add("bbb");set.add("aaa");set.add("ccc");//有重复的set只保留一份
- 判断0是否在集合中
boolean contains(Object o)
- 删除集合中的0
boolean remove(Object o)
- 返回迭代器
Iterator<String> iterator = set.iterator();
- 清空集合
void clear();
Set的遍历方式:
//遍历方式 for eachfor (String str : set) {System.out.print(str + " ");}System.out.println();//用迭代器进行遍历Iterator<String> iterator = set.iterator();while (iterator.hasNext()) {String str = iterator.next();System.out.print(str + " ");}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
