1.在上机练习4第1题的基础上,分别使用ArrayList、LinkedList、HashMap和TreeSet保存学生的信息,测试不同数据结构执行以下操作需要的时间:
(1)添加10,000个学生。
(2)查找100个学生。
(3)删除100个学生。
程序文件命名为Exe6_1.java。(可适当调整学生数量,以适应你自己的机器)
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map.Entry;
import java.util.Scanner;
import javax.swing.text.html.HTMLDocument.Iterator;
public class Exe6_1 {
int index=0;
Scanner in = new Scanner(System.in);
HashMap<String,Integer> HashNo=new HashMap<String,Integer>();
HashMap<String,Integer> HashName=new HashMap<String,Integer>();
HashMap<String,Integer> HashAge=new HashMap<String,Integer>();
HashMap<String,Integer> HashGender=new HashMap<String,Integer>();
ArrayList<String> ListNo = new ArrayList<String>();
ArrayList<String> ListName = new ArrayList<String>();
ArrayList<String> ListAge = new ArrayList<String>();
ArrayList<String> ListGender = new ArrayList<String>();
LinkedList<String> lListNo = new LinkedList<String>();
LinkedList<String> lListName = new LinkedList<String>();
LinkedList<String> lListAge = new LinkedList<String>();
LinkedList<String> lListGender = new LinkedList<String>();
public void hashtianjia()
{
String no = new String(in.nextLine());
String name = new String(in.nextLine());
String age = new String(in.nextLine());
String gender = new String(in.nextLine());
HashNo.put(no,index);
HashName.put(name,index);
HashAge.put(age,index);
HashGender.put(gender,index);
index++;
}
public static String getKey(HashMap<String,Integer> map,Integer keys)
{
String key = null;
for(String getKey: map.keySet()){
if(map.get(getKey).equals(keys)){
key = getKey;
}
}
return key;
//这个key肯定是最后一个满足该条件的key.
}
public void hashchazhao()
{
Integer keys=-1;
String chazhao = new String(in.nextLine());
keys = HashNo.get(chazhao);
if(keys!=-1)
{
System.out.println(getKey(HashNo,keys));
System.out.println(getKey(HashName,keys));
System.out.println(getKey(HashAge,keys));
System.out.println(getKey(HashGender,keys));
}
}
public void hashshanchu()
{
String chazhao = new String(in.nextLine());
HashNo.remove(chazhao);
HashName.remove(chazhao);
HashAge.remove(chazhao);
HashGender.remove(chazhao);
}
public void llisttianjia()
{
String no = new String(in.nextLine());
String name = new String(in.nextLine());
String age = new String(in.nextLine());
String gender = new String(in.nextLine());
lListNo.add(no);
lListName.add(name);
lListAge.add(age);
lListGender.add(gender);
}
public void llistchahzao()
{
String chazhao = new String(in.nextLine());
for(int i=0;i<lListNo.size();i++)
{
if(chazhao.equals(lListNo.get(i)))
{
System.out.println(lListNo.get(i));
System.out.println(lListName.get(i));
System.out.println(lListAge.get(i));
System.out.println(lListGender.get(i));
break;
}
}
}
public void llistshanchu()
{
String chazhao = new String(in.nextLine());
for(int i=0;i<lListNo.size();i++)
{
if(chazhao.equals(lListNo.get(i)))
{
lListNo.remove(i);
lListName.remove(i);
lListAge.remove(i);
lListGender.remove(i);
break;
}
}
}
public void listtianjia()
{
String no = new String(in.nextLine());
String name = new String(in.nextLine());
String age = new String(in.nextLine());
String gender = new String(in.nextLine());
ListNo.add(no);
ListName.add(name);
ListAge.add(age);
ListGender.add(gender);
}
public void listchazhao()
{
String chazhao = new String(in.nextLine());
for(int i=0;i<ListNo.size();i++)
{
if(chazhao.equals(ListNo.get(i)))
{
System.out.println(ListNo.get(i));
System.out.println(ListName.get(i));
System.out.println(ListAge.get(i));
System.out.println(ListGender.get(i));
break;
}
}
}
public void listshanchu()
{
String chazhao = new String(in.nextLine());
for(int i=0;i<ListNo.size();i++)
{
if(chazhao.equals(ListNo.get(i)))
{
ListNo.remove(i);
ListName.remove(i);
ListAge.remove(i);
ListGender.remove(i);
break;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Exe6_1 test = new Exe6_1();
Scanner in = new Scanner(System.in);
while(true)
{
System.out.println("------------------------");
System.out.println("Plese input the command");
System.out.println("请注意,每一个命令分别使用HashMap,LinkedList,ArrayList分别执行三次");
System.out.println("1.添加学生,格式为:学号(换行)姓名(换行)年龄(换行)性别 PS:因为要使用三种不同的添加方法,因此请添加三次");
System.out.println("2.查找学生,格式为:学号");
System.out.println("3.删除学生,格式为:学号");
System.out.println("------------------------");
int command;
command=in.nextInt();
switch(command)
{
case 1:
test.hashtianjia();
test.listtianjia();
test.llisttianjia();
break;
case 2:
test.hashchazhao();
test.listchazhao();
test.llistchahzao();
break;
case 3:
test.hashshanchu();
test.listshanchu();
test.llistshanchu();
break;
default:
break;
}
}
}
}