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);
}
}
}