Java集合框架上机练习题
1 编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。查询结果如下图:
package key;
import java.util.ArrayList;
import java.util.Iterator;
class books implements Comparable{
String name;
double price;
public books(String name,double price){
this.name=name;
this.price=price;
}
public int compareTo(Object obj) {
books book=(books)obj;
if(book.price == this.price)
return 1;
else
return 0;
}
}
public class book {
public double price;
public static void main(String[] args){
ArrayList<books> List=new ArrayList<books>();
books bk1=new books("java基础教程",29);
books bk2=new books("C++基础教程",29);
books bk3=new books("数据库技术",29);
List.add(bk1);
List.add(bk2);
List.add(bk3);
books book0=new books("模式识别",29);
System.out.println("新书:《"+book0.name+"》与下列图书:");
Iterator<books> it=List.iterator();
while(it.hasNext()){ //下一个元素是否存在
books book=it.next(); //读取下一个元素
if(book.compareTo(book0)==1)
System.out.println("\t"+book.name);
}
System.out.println("价格相同,具体价格为:"+book0.price);
}
}
2 编写一个应用程序,用户分别从两个文本框输入学生的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
程序运行效果如图:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
@SuppressWarnings("serial")
public class window extends JFrame{
//定义基础模块
JLabel lab1 =new JLabel("姓名:");
TextField text1 = new TextField(8);
JLabel lab2=new JLabel("成绩:");
TextField text2 = new TextField(8);
JButton button = new JButton("确定");
JTextArea textArea = new JTextArea(50,10);
//定义构造函数
window(){
super("学生成绩排序");
Container contentPane=getContentPane();
Box box1=Box.createHorizontalBox();
box1.add(lab1);
box1.add(text1);
Box box2=Box.createHorizontalBox();
box2.add(lab2);
box2.add(text2);
Box box3=Box.createHorizontalBox();
box3.add(button);
//定义面板
JPanel panel1 =new JPanel();
panel1.add(box1);
panel1.add(box2);
panel1.add(box3);
contentPane.add(panel1,BorderLayout.NORTH);
//设置数据展示框
JTextArea textArea =new JTextArea();
contentPane.add(textArea,BorderLayout.CENTER);
//点击事件
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
textArea.append("姓名:"+text1.getText()+" "+"成绩:"+text2.getText()+"\n");
}
}
);
//设置窗口
setBounds(200, 100, 600, 500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
@SuppressWarnings("unused")
Window win =new window();
}
}