java基础第十二天_集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java基础第十二天_集合相关的知识,希望对你有一定的参考价值。

1.描述HashMap内部实现原理。

2.描述Hashset和HashMap的区别。

3.年级的集合使用Map的嵌套实现。

  10班,每个班50人。

4.编程实现文本文件的复制。合理设计程序,得到缓冲区的大小的高效区间。

  提示缓冲区设置1k开始,不超过10M。

=========================================================================

1.描述HashMap内部实现原理。

  1. HashMap时隔散列表,存储内容是键值对key-value  映射。

  2. 存数据:调用put(key,value) 获取key的hashcode,然后通过运算得出存储位置index,然后遍历链表查看是否有

  3. 相同内容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基础第十二天_集合的主要内容,如果未能解决你的问题,请参考以下文章

IT十八掌作业_java基础第十二天_集合

IT十八掌作业_java基础第十二天_集合

java基础第十二天_集合

大数据Java基础第十二天作业

Java基础第十二天总结

Java基础第十二天总结——面向对象(中)