第一题: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));
}
}
}
}
第四题:
import java.io.IOException;
import java.io.FileReader;
import java.io.FileWriter;
class IOWrite{
public static void main(String[] args) throws IOException{
int i = 0;
FileReader out = new FileReader("d:/index1.txt");
FileWriter in = new FileWriter("d:/index2.txt",true);
char[] buffer = new char[1024];
int len = 0;
while((len = out.read(buffer)) != -1){
in.write(buffer,0,len);
}
in.close();
out.close();
}
}
转载于:https://blog.51cto.com/senlinmin/1782473