第一题:HashMap内部实现原理 HashMap存的是key => value 对的集合,每一对就是一个entry(条目),key和value存的都是对象的引用。key不能存重复的值,key的集合是keySet()。value可以存重复的值,value的集合是values()。 HashMap底层用的是hash(散列)算法,使的在map中查询值速度快效率高。 HashMap判断对象是否相等,先判断hashcode是否相等,再判断equals值是否相等。对象相等代码:(this.hashcode() == obj.hashcode() && (this == obj || this.equals(obj))) 第二题:HashSet和HashMap区别 HashSet:实现Collection接口,只存value的集合,用的hash算法存储,value的值不能重复。 HashMap:实现Map接口,存的key=>value的集合,用的hash算法存储,key的值不能重复,value值可以重复。 第三题: import java.util.Map; import java.util.HashMap; import java.util.Map.Entry; public class Student { public static void main(String[] args) { Map<Integer,Map <Integer,String>> classes = new HashMap<Integer,Map <Integer,String>>(); //往里添加数据 Map<Integer,String> student = null; int num = 1; for(int i=1;i<=10;i++){ student = new HashMap<Integer,String>(); classes.put(i,student); for(int j=1;j<=50;j++){ student.put(j,"Tom" + num); num ++; } } //使用Entry for(Entry<Integer,Map<Integer,String>> class_entry : classes.entrySet()){ Map<Integer,String> students = class_entry.getValue(); for(Entry<Integer,String> student_entry : students.entrySet()){ System.out.println("班级:" + class_entry.getKey() + "班,学号:" + student_entry.getKey() + "号,姓名:" + student_entry.getValue()); } } System.out.println("--------------------------------------------------------------"); //使用keySet for(Integer class_num:classes.keySet()){ Map<Integer,String> students = classes.get(class_num); for(Integer student_num:students.keySet()){ System.out.println("班级:" + class_num + "班,学号:" + student_num + "号,姓名:" + students.get(student_num)); } } } }
时间: 2024-10-23 23:30:16