码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-03-28 00:36:48      阅读:281      评论:0      收藏:0      [点我收藏+]

标签: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基础第十二天_集合

标签:java基础第十二天_集合

原文地址:http://45279.blog.51cto.com/35279/1757234

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!