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);  //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("学生成绩");
	}

}

排序前:

排序后:


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值