java基础第十二天_集合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础第十二天_集合相关的知识,希望对你有一定的参考价值。
1.描述HashMap内部实现原理。
2.描述Hashset和HashMap的区别。
3.年级的集合使用Map的嵌套实现。
10班,每个班50人。
4.编程实现文本文件的复制。合理设计程序,得到缓冲区的大小的高效区间。
提示缓冲区设置1k开始,不超过10M。
=========================================================================
1.描述HashMap内部实现原理。
HashMap时隔散列表,存储内容是键值对key-value 映射。
存数据:调用put(key,value) 获取key的hashcode,然后通过运算得出存储位置index,然后遍历链表查看是否有
相同内容equals,最后插入
2.描述Hashset和HashMap的区别。
HashSet:add()方法放入,HashSet就相当于HashMap中只有Key的Hashmap,实现的set接口,继承collection接口,由于需要equals判断重复问题,运算速度会比HashMap慢。
HashMap:键值对存储,put()方法放入,key唯一所以运算会快
3.年级的集合使用Map的嵌套实现。
10班,每个班50人。
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class MapDemo {
public static void main(String[] args) {
//班级集合
Map<Integer, Map<String,String>> classes = new HashMap<Integer, Map<String,String>>();
//名单集合
Map<String,String> names = null ;
int no = 1 ;
//向班级集合添加班级(名单集合)
for(int i = 1 ; i <= 10 ; i ++){
names = new HashMap<String,String>();
classes.put(i, names);
for(int j = 1 ; j <= 50 ; j ++){
names.put(i + "." + j, "tom" + no);
no ++ ;
}
}
//遍历班级集合的EntrySet
for(Entry<Integer, Map<String,String>> entry:classes.entrySet()){
//班号
Integer key = entry.getKey() ;
//名单集合
Map<String,String> values = entry.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("--------------------------------") ;
//使用KeySet遍历集合
for(Integer classNo : classes.keySet()){
Map<String,String> map = classes.get(classNo);
for(String stuNo : map.keySet()){
String name = map.get(stuNo);
System.out.println(stuNo + " === " + name);
}
}
}
}
4.编程实现文本文件的复制。合理设计程序,得到缓冲区的大小的高效区间。
提示缓冲区设置1k开始,不超过10M。
import java.io.FileReader;
import java.io.FileWriter;
public class CopyFileDemo {
public static void main(String[] args) {
//获取系统属性
String str = System.getProperty("line.separator");
System.out.println(str);
String srcFile = "d:/aa.txt";
String targFile = "d:/bb.txt";
FileReader reader = null;
FileWriter writer = null;
try {
// 读取src文件的reader
reader = new FileReader(srcFile);
// 写入targ文件的fileWriter
writer = new FileWriter(targFile, false);
// 定义字符缓冲区
char[] buf = new char[1024];
int len = 0;
while ((len = reader.read(buf)) != -1) {
writer.write(buf, 0, len);
}
System.out.println("over");
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (reader != null) {
reader.close();
}
if (writer != null) writer.close();
}
catch (Exception e2) {
}
}
}
}
问题:集合东西有点多,需要整理一下
心得:集合东西比较重要多练多看。
本文出自 “作业” 博客,请务必保留此出处http://10718270.blog.51cto.com/10708270/1783039
以上是关于java基础第十二天_集合的主要内容,如果未能解决你的问题,请参考以下文章