Java集合框架上机练习题

1编写一个Book类,该类至少有nameprice两个属性。该类要实现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);   
        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());  
            Student stu = new Student(name,chengji);  
            if(arg0.getSource()==btn1){  
                 t.append(txt1.getText() + ":" + txt2.getText()+"\n" );  
                  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("学生成绩");  
    }  
  
}  


排序前:


排序后:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值