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

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

IT十八掌作业_java基础第十五天_IO串行化/深度复制

IT十八掌作业_java基础第十七天_QQ案例

IT十八掌作业_java基础第十六天_GUI/socket

IT十八掌作业_java基础第十五天_IO串行化/深度复制

IT十八掌作业_java基础第二天_进制转换原理和补码存储方式