IT十八掌作业_java基础第十二天_集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT十八掌作业_java基础第十二天_集合相关的知识,希望对你有一定的参考价值。
1.描述HashMap内部实现原理。
HashMap 存储的是key - value 键值对,key不能重复,无序的。
使用put方法存放数据,存放时通过hash(key)%len来决定存放位置,
主要通过A.hashcode==B.hashcode&&(this == obj||A.equals(B))来判断是否同一个对象,
比较链上的每个对象,如果没有相同,就放入到链尾,如果该链上无对象,直接放入。
2.描述Hashset和HashMap的区别。
两者实际上并无区别,HashSet内部就是使用HashMap实现,只不过HashSet里面的HashMap所有的value都是同一个Object而已。
3.年级的集合使用Map的嵌套实现。
10班,每个班50人。
package com.it18zhang.hash.demo;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
public class SchoolDemo {
public static void main(String[] args) {
Map<Integer,Map<String,String>> school = new HashMap<Integer,Map<String,String>>();
Map<String,String> className=null;
for (int i = 1; i <= 10; i++) {
className = new HashMap<String,String>();
for (int j = 1; j <= 50; j++) {
className.put("C"+i+"."+j, "Tom"+((i-1)*50+j));
}
school.put(i,className);
}
System.out.println("------输出----entrySet方式 ----------" );
for(Entry<Integer,Map<String,String>> enties:school.entrySet()){
Integer key = enties.getKey();
Map<String,String> values = enties.getValue();
for(Entry<String,String>entry0 : values.entrySet()){
String stuNo = entry0.getKey();
String stuName = entry0.getValue();
System.out.println(key + "=>" + stuNo + "=>" + stuName );
}
}
System.out.println("----输出------Iterator方式 ----------" );
Iterator<Entry<Integer, Map<String, String>>> it = school.entrySet().iterator();
while(it.hasNext()){
Entry<Integer,Map<String,String>> entries = (Entry<Integer,Map<String,String>>)it.next();
Integer key = entries.getKey();
Map<String,String> values = entries.getValue();
for(Entry<String,String> e0:values.entrySet()){
String stuNo= e0.getKey();
String stuName = e0.getValue();
System.out.println(key + "=>" + stuNo + "=>" + stuName );
}
}
System.out.println("----输出------keySet方式 ----------" );
for(Integer key:school.keySet()){
Map<String,String> cName = school.get(key);
for(String stuNo:cName.keySet()){
String stuName = cName.get(stuNo);
System.out.println( "=>" + stuNo + "=>" + stuName );
}
}
}
}
4.编程实现文本文件的复制。合理设计程序,得到缓冲区的大小的高效区间。
提示缓冲区设置1k开始,不超过10M。
package com.it18zhang.io.demo;
import java.io.FileReader;
import java.io.FileWriter;
public class CopyFileDemo {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("d:/aa.txt");
FileWriter fw = new FileWriter("d:/bb.txt");
char[] buf = new char[1024];
int len= 0;
while((len = fr.read(buf))!= -1){
fw.write(buf, 0, len);
}
fw.close();
fr.close();
}
}
以上是关于IT十八掌作业_java基础第十二天_集合的主要内容,如果未能解决你的问题,请参考以下文章