当前位置:文档之家› 实验十 泛型与集合框架

实验十 泛型与集合框架

实验十泛型与集合框架1.实验目的1、掌握LinkedList<E>类和Collections类提供的用于排序和查找链表中的数据的方法2、掌握用散列映射来存储数据3、掌握TreeSet<E>类的使用2.实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。

1)实验1 按身高排序2)实验2 英汉小字典3)实验3 演出节目单4)实验4输出args[]中的单词2、设计编写程序完成以下任务。

1)仿照实验1编写TV类,要求通过实现Comparable接口规定该类的对象的大小关系,按price值得大小确定大小关系,即电视机按其价格确定之间的大小关系。

2)从控制台输入若干个单词(输入回车结束)放入集合中,将这些单词排序后(忽略大小写)打印出来。

知识点:List接口的实现类、String常用方法3)请使用LinkedList来模拟一个队列(先进先出的特性):(1)拥有放入对象的方法void put(Object o)(2)取出对象的方法Object get()(3)判断队列当中是否为空的方法boolean isEmpty();并且,编写测试代码,验证你的队列是否正确。

知识点:List接口的实现类LinkedList常用方法4)在一个列表中存储以下元素:apple,grape,banana,pear(1)返回集合中的最大的和最小的元素(2)将集合进行排序,并将排序后的结果打印在控制台上知识点:Collections类中的方法3.实验步骤略4.评分标准1.A——内容功能完善,编程风格好,人机接口界面好;2.B——内容功能完善,编程风格良好,人机接口界面良好;3.C——完成必做内容;4.D——能完成必做内容;5.E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。

(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)附录:实验1 按身高排序模板代码Student.javapublic class Student implements Comparable<Student>{int height=0;String name;Student(String n,int h){name=n;height=h;}public int compareTo(Student b){return (this.height-b.height);}}FindStudent.javaimport java.util.*;public class FindStudent {public static void main(String[] args) {List<Student> list=new LinkedList<Student>();list.add(new Student("张三",188));list.add(new Student("李四",178));list.add(new Student("王五",198));Iterator<Student> iter=list.iterator();System.out.println("排序前,链表中的数据");while(iter.hasNext()){Student stu=iter.next();System.out.println(+"身高:"+stu.height);}Collections.sort(list);System.out.println("排序后,链表中的数据");iter=list.iterator();while(iter.hasNext()){Student stu=iter.next();System.out.println(+"身高:"+stu.height);}Student zhaolin=new Student("zhao xiao lin",178);int index=Collections.binarySearch(list,zhaolin,null);if(index>=0){System.out.println(+"和链表中"+list.get(index).name+"身高相同");}}}实验2 英汉小字典模板代码Dictionary.javapublic class Dictionary {public static void main(String[] args) {WindowWord win = new WindowWord();win.setTitle("英汉小字典");}}WindowWord.javaimport java.awt.*;import javax.swing.*;public class WindowWord extends JFrame{JTextField inputText,showText;WordPolice police;WindowWord(){setLayout(new FlowLayout());inputText=new JTextField(6);showText=new JTextField(6);add(inputText);add(showText);police=new WordPolice();police.setJTextField(showText);inputText.addActionListener(police);setBounds(100,100,400,280);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}WordPolice.javaimport java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.*;public class WordPolice implements ActionListener {JTextField showText;HashMap<String,String> hashtable;File file=new File("word.txt");Scanner sc=null;WordPolice(){hashtable=new HashMap<String,String>();try{sc=new Scanner(file);while(sc.hasNext()){String englishWord=sc.next();String chineseWord=sc.next();hashtable.put(englishWord, chineseWord);}}catch(Exception e){System.out.print(e.toString());} }public void setJTextField(JTextField showText){this.showText=showText;}public void actionPerformed(ActionEvent e){String englishWord=e.getActionCommand();if(hashtable.containsKey(englishWord)){String chineseWord=hashtable.get(englishWord);showText.setText(chineseWord);}else{showText.setText("没有此单词");}}}实验3 演出节目单模板代码Outer.javaPerform.javapublic class Perform {public static void main(String[] args) {new ShowFrame();}}Program.javaimport java.util.*;public class Program implements Comparable<Program> {Date time=null;String name;Program(String s,int year,int month,int day,int hour,int minute,int second){ name=s;Calendar calendar=Calendar.getInstance();calendar.set(year,month-1,day,hour,minute,second);long n=calendar.getTimeInMillis();time=new Date(n);}public int compareTo(Program b) {int m=0;if(time.equals(b.getDate())){m=0;}else if(time.after(b.getDate())){m=1;}else if(time.before(b.getDate())){m=-1;}return m;}public String getName(){return name;}public Date getDate(){return time;}}ShowFrame.javaimport java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import java.text.SimpleDateFormat;public class ShowFrame extends JFrame implements ActionListener {JTextArea showArea;JTextField inputName,inputTime;JButton button;TreeSet<Program> treeSet;ShowFrame(){treeSet=new TreeSet<Program>();showArea=new JTextArea();showArea.setFont(new Font("",Font.BOLD,20));inputName=new JTextField(5);inputTime=new JTextField(10);button=new JButton("确定");button.addActionListener(this);JPanel pNorth=new JPanel();pNorth.add(new JLabel("节目名称"));pNorth.add(inputName);pNorth.add(new JLabel("时间(yyyy/mm/dd/hh:mm:ss)"));pNorth.add(inputTime);pNorth.add(button);add(pNorth,BorderLayout.NORTH);add(new JScrollPane(showArea),BorderLayout.CENTER);setSize(500,320);setVisible(true);setDefaultCloseOperation(DISPOSE_ON_CLOSE);validate();}public void actionPerformed(ActionEvent e) {String name=inputName.getText();String time=inputTime.getText();StringTokenizer jiexi=new StringTokenizer(time,"/:");int year=Integer.parseInt(jiexi.nextToken());int month=Integer.parseInt(jiexi.nextToken());int day=Integer.parseInt(jiexi.nextToken());int hour=Integer.parseInt(jiexi.nextToken());int minute=Integer.parseInt(jiexi.nextToken());int second=Integer.parseInt(jiexi.nextToken());Program program=new Program(name,year,month,day,hour,minute,second);treeSet.add(program);show(treeSet);}public void show(TreeSet tree){showArea.setText(null);Iterator<Program> te=treeSet.iterator();while(te.hasNext()){Program pro=te.next();Date date=pro.getDate();SimpleDateFormat matter1=new SimpleDateFormat("yyyy/MM/dd/HH:mm:ss");String time=matter1.format(date);showArea.append(pro.getName()+"(演出时间)"+time+"\n");}}}实验4 输出args[]中的单词模板代码TestArgsWords.javaimport java.util.*;public class TestArgsWords {private static final int ONE = 1;public static void main(String args[]) {Map<String, Integer> m = new HashMap<String, Integer>();for (int i = 0; i < args.length; i++) {if(!m.containsKey(args[i])) {m.put(args[i], ONE);}else {int freq = m.get(args[i]);m.put(args[i], freq + 1);}}System.out.println(m.size() + " distinct words detected:");System.out.println(m);}}。

相关主题