Java泛型与集合框架(上机实践三)

Java泛型与集合框架(上机实践三)

实践一

要求:

编写一个Book类,该类至少有price成员变量。该类要实现Comparable接口,在接口的compareTo()方法中规定Book类两个实例的大小关系为二者的price成员的大小关系。

编写一个主类,在main()方法中将Book类的若干个对象存放到一个链表中,然后再用Book类创建一个新的对象,并检查这个对象和链表中哪些对象相等。

代码:
public class Book implements Comparable {
  double price;
  String name;

  public void setPrice(double c) {
   price=c;
  }

  public double getPrice() {
   return price;
  } 

  public void setName(String n) {
   name=n;
  }

  public String getName() 
   return name;
  } 

  public int compareTo(Object object) {
   Book bk=(Book)object;
	int difference=(int)((this.getPrice()-bk.getPrice())*10000);
	return difference;
  }
}
import java.util.*;

public class MainClass {
@SuppressWarnings("unchecked")
  public static void main(String args[]) {
   List<Book> bookList=new LinkedList<Book>();
      
   String bookName[]={"Java基础教程","XML基础教程","JSP基础教程","C++基础教程",
             "J2ME编程","操作系统","数据库技术"};
   double bookPrice[]={29,21,22,29,34,32,29};
   Book book[]=new Book[bookName.length]; 
   for(int k=0;k<book.length;k++) {
     book[k]=new Book();
     book[k].setName(bookName[k]);
     book[k].setPrice(bookPrice[k]);
     bookList.add(book[k]);
   }

   Book newBook=new Book();
   newBook.setPrice(29);
   newBook.setName("Java与模式");
   Collections.sort(bookList);
      
   int m=-1;
   System.out.println("新书:"+newBook.getName()+"("+newBook.getPrice()+")与下列图书:");
   while((m=Collections.binarySearch(bookList,newBook,null))>=0) {
    Book bk=bookList.get(m);
	System.out.println("\t"+bk.getName()+"("+bk.getPrice()+")");
       
	bookList.remove(m);//  补充查找所有价格相同的书籍代码
  }
   System.out.println("价钱相同.");
  }
}

实践二

要求:

给定字符串数组,找出各个字符串中出现的公共字符。

举例如下:

给定字符串数组中有三个字符串"look", “lock”, “cook”,输出字符’k’, ‘o’,输出字符的顺序不做要求。

代码:
import java.util.*;

public class Share{

	public static void main(String args[]){
		String bookName[]={"look", "lock", "cook"};
		
		LinkedList<HashSet<Character>> Filter = new LinkedList<HashSet<Character>>();
		System.out.println("消除重复前");
		System.out.println("look "+ "lock "+ "cook ");
		for (int i = 0; i < bookName.length; i++){
			HashSet<Character> temp = new HashSet<Character>();
			for (int j = 0; j < bookName[i].length(); j++){
				temp.add(bookName[i].charAt(j));
			}
			Filter.add(temp);
			
			
		}
		
		HashMap<Character, Integer> sta = new HashMap<Character, Integer>();
		System.out.println("消除重复后");
		for (int i = 0; i < Filter.size(); i++){
			for (Character c : Filter.get(i)){
				System.out.println(c+"");
				if (sta.containsKey(c)){
					sta.put(c, sta.get(c) + 1);
				} else{
					sta.put(c, 1);
				}
			}
			System.out.println("公共字符");
			System.out.println(sta);
		}
		
	}
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChlinRei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值