62,615
社区成员
发帖
与我相关
我的任务
分享
import java.util.Comparator;
import java.util.Iterator;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import org.junit.Test;
/*
* 练习 TreeSet的自然排序和定制排序
*/
public class TestTreeSet {
@Test
public void test() {
//自然排序
Set<Item> set = new TreeSet<Item>();
set.add(new Item("Billy",4547));//此处报空指针异常
set.add(new Item("Eric",3369));
set.add(new Item("Magic",3608));
for(Object obj:set){
System.out.println(obj);
}
//定制排序
Comparator<Item> com = new Comparator<Item>() {
@Override
public int compare(Item o1, Item o2) {
Item it1 = (Item) o1;
Item it2 = (Item) o2;
int i = it1.getPartNum().compareTo(it2.getPartNum());
if (i == 0) {
return it1.getDescription().compareTo(it2.getDescription());
} else {
return i;
}
}
};
SortedSet<Item> parts = new TreeSet<Item>(com);
parts.add(new Item("Tom", 1456));
parts.add(new Item("Sam", 2580));
parts.add(new Item("Kimi", 3369));
parts.add(new Item("Penny", 1234));
for (Object obj : parts) {
System.out.println(obj);
}
}
}
public class Item implements Comparable {
private String description;
private Integer partNum;
//构造器
public Item(){
}
public Item(String description, Integer patrNum) {
super();
this.description = description;
this.partNum = partNum;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return this.description;
}
public Integer getPartNum() {
return partNum;
}
public void setPartNum(Integer partNum) {
this.partNum = partNum;
}
@Override
public String toString() {
return "Item [description=" + description + ", partNum=" + partNum
+ "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result
+ ((description == null) ? 0 : description.hashCode());
result = prime * result + ((partNum == null) ? 0 : partNum.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Item other = (Item) obj;
if (description == null) {
if (other.description != null)
return false;
} else if (!description.equals(other.description))
return false;
if (partNum == null) {
if (other.partNum != null)
return false;
} else if (!partNum.equals(other.partNum))
return false;
return true;
}
@Override
public int compareTo(Object o) {
if(o instanceof Item){
Item it = (Item)o;
int i = this.partNum.compareTo(it.partNum);
if(i == 0){
return this.description.compareTo(it.description);
}else{
return i;
}
}
return 0;
}
}
public Item(String description, Integer patrNum) {
super();
this.description = description;
this.partNum = partNum;
}
楼主,你变量敲错了哈, Integer patrNum