Java集合框架上機練習題
阿新 • • 發佈:2019-02-10
1編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable介面,在介面的compareTo()方法中規定兩個Book類例項的大小關係為二者的price屬性的大小關係。在主函式中,選擇合適的集合型別存放Book類的若干個物件,然後建立一個新的Book類的物件,並檢查該物件與集合中的哪些物件相等
package org.gerrysu; import java.util.*; public class Book implements Comparable{ String name; int price; public Book(String name,int price){ this.name = name; this.price = price; //System.out.println(name.toString()); } public int compareTo(Object obj) { Book bk = (Book)obj; if(bk.price==this.price){ return 1; } return 0; } public static void main(String[] args) { // TODO Auto-generated method stub List<Book> list = new ArrayList<Book>(); Book bk1 = new Book("java基礎教程",29); Book bk2 = new Book("資料庫技術",29); Book bk3 = new Book("C++基礎教程",29); Book bk4 = new Book("微機原理",39); Book bk5 = new Book("作業系統",39); Book bk6 = new Book("高數",59); Book bk7 = new Book("資料結構",69); list.add(bk1); list.add(bk2); list.add(bk3); list.add(bk4); list.add(bk5); list.add(bk6); list.add(bk7); //Iterator<Book> iter = list.iterator(); Collections.sort(list); System.out.println("輸入:"); Scanner bookin = new Scanner(System.in); String inname = bookin.nextLine(); int np = bookin.nextInt(); Book bkn = new Book(inname,np); System.out.println("新書"+bkn.name+"與下列圖書:"); Iterator<Book> it = list.iterator(); while(it.hasNext()){ Book b= it.next(); if(b.compareTo(bkn)==1) System.out.println(b.name); } System.out.println("價格相同,具體價格為:"+bk1.price+"元"); } }
2.編寫一個應用程式,使用者分別從兩個文字框輸入學術的姓名和分數,程式按成績排序將這些學生的姓名和分數顯示在一個文字區中。
package org.gerrysu2; public class Student implements Comparable{ String name; int grade; Student(String name,int grade){ this.name = name; this.grade = grade; } @Override public int compareTo(Object arg0) { // TODO Auto-generated method stub if (this.grade > ((Student) arg0).grade) return -1 ; else if(this.grade == ((Student) arg0).grade) return 0; else return 1; } } package org.gerrysu2; import java.awt.BorderLayout; import java.awt.Container; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.border.EmptyBorder; public class ApplicationTest extends JFrame{ ArrayList list = new ArrayList<>(); ApplicationTest(String s){ init(s); setSize(300, 500); //設定視窗在螢幕上的位置及大小 setVisible(true); //設定視窗可見性,必須 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //設定視窗關閉方式,必須 } public void init(String s){ setTitle(s); JPanel paneln = new JPanel(); paneln.setBorder(new EmptyBorder(5, 5, 5, 5)); // this.setContentPane(paneln); //frame框架放入panel容器 paneln.setLayout(new GridLayout(5, 1, 5, 5)); // //建立容器 JPanel panel1 = new JPanel(); JPanel panel2 = new JPanel(); JPanel panel3 = new JPanel(); TextField txt1 = new TextField(); txt1.setColumns(10); TextField txt2 = new TextField(); txt2.setColumns(10); JLabel j1 = new JLabel("姓名"); JLabel j2 = new JLabel("成績"); JButton btn1 = new JButton("遞交"); JButton btn2 = new JButton("排序"); JTextArea t = new JTextArea(10, 10); JScrollPane scrollPane = new JScrollPane(t); //滑動文字框 panel1.add(j1); panel1.add(txt1); panel2.add(j2); panel2.add(txt2); panel3.add(btn1); panel3.add(btn2); paneln.add(panel1); paneln.add(panel2); paneln.add(panel3); paneln.add(scrollPane); btn1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub String name = txt1.getText(); int chengji = Integer.parseInt(txt2.getText());//)就是將String字元型別資料轉換為Integer整型資料 Student stu = new Student(name,chengji); if(arg0.getSource()==btn1){ t.append(txt1.getText() + ":" + txt2.getText()+"\n" );//用於顯示到TextArea list.add(stu); } } }); btn2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent arg0) { // TODO Auto-generated method stub Collections.sort(list); if(arg0.getSource()==btn2){ Iterator<Student> it = list.iterator(); while(it.hasNext()){ Student s = it.next(); t.append(s.name + ": " + s.grade + "\n"); } } } }); } public static void main(String[] args) { // TODO Auto-generated method stub ApplicationTest apt = new ApplicationTest("學生成績"); } }
排序前:
排序後: