Java~Map的基本使用与Map的三种遍历方式、Set的基本使用

概念模型

一般把搜索的数据称为关键字(key),和关键字对应的称为值(value),所以就会出现俩种模型

  1. 纯key模型,即是我们的Set要解决的事情,只需判断关键字在不在集合即可,没有关联的value
  2. 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 + " ");}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部