1、编写一个Book类,该类至少有name和price两个属性。该类要实现Comparable接口,在接口的compareTo()方法中规定两个Book类实例的大小关系为二者的price属性的大小关系。在主函数中,选择合适的集合类型存放Book类的若干个对象,然后创建一个新的Book类的对象,并检查该对象与集合中的哪些对象相等。
import java.util.*;
public class Book implements Comparable<Book>{
private String name;
private double price;
public Book(String name, double price) {
super();
this.name = name;
this.price = price;
}
public String getName(){
return name;
}
public double getPrice(){
return price;
}
public int compareTo(Book o) {
if(this.price==o.price){
return 1;
}else return 0;
}
public static void main(String[] args) {
LinkedList<Book> list=new LinkedList<Book>();
Book b1=new Book("c语言",56.5);
Book b2=new Book("JAVA基础教程",29.90);
Book b3=new Book("C++基础教程", 29.90);
Book b4=new Book("数据库技术", 29.90);
list.add(b1);
list.add(b2);
list.add(b3);
list.add(b4);
Book b5=new Book("模式识别", 29.90);
System.out.println("新书"+b5.getName()+"与下列图书:");
Iterator<Book> it=list.iterator();
while(it.hasNext()) {
Book b=it.next();
if(b.compareTo(b5)==1)
System.out.println(b.name);
}
System.out.println("价格相同,具体价格为:"+b5.price);
}
}
调试结果:
2、编写一个应用程序,用户分别从两个文本框输入学术的姓名和分数,程序按成绩排序将这些学生的姓名和分数显示在一个文本区中。
import javax.swing.*;
import java.util.*;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
class SortByGrade implements Comparator{
public int compare(Object o1, Object o2) {
Stuent s1=(Stuent)o1;
Stuent s2=(Stuent)o2;
if(s1.getGrade()<=s2.getGrade())
return 1;
else
return -1;
}
}
class Stuent{
String name;
double grade;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
}
public class Sort extends JFrame implements ActionListener{
Box box1;
JTextField j1=new JTextField(10);
JTextField j2=new JTextField(10);
JButton button=new JButton("提交");
Container container=getContentPane();
JTextArea jTextArea=new JTextArea();
JPanel jPanel1=new JPanel();
ArrayList<Stuent> list=new ArrayList<Stuent>();
Sort() {
box1=Box.createHorizontalBox();
box1.add(new Label("姓名:"));
box1.add(j1);
box1.add(Box.createHorizontalStrut(8));
box1.add(new Label("分数"));
box1.add(j2);
box1.add(button);
jPanel1.add(box1);
jPanel1.setLayout(new FlowLayout());
container.add(jPanel1,BorderLayout.NORTH);
JScrollPane jScrollPane=new JScrollPane(jTextArea);
add(jScrollPane);
container.add(jScrollPane, BorderLayout.CENTER);
setTitle("窗口");
setSize(500,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
String name=j1.getText().toString();
double grade=Double.parseDouble(j2.getText());
Stuent s=new Stuent();
s.setName(name);
s.setGrade(grade);
list.add(s);
Collections.sort(list, new SortByGrade());
jTextArea.setText(null);
for (Stuent stu : list) {
jTextArea.append(stu.getName()+" "+stu.getGrade()+"\n");
}
}
public static void main(String[] args) {
new Sort();
}
}
调试结果: