如果經常會去搜索集合中的某一項建議使用ArrayList集合,ArrayList集合是有序集合
再介紹一個TreeSet集合,也是有序集合,TreeSet集合不會按照數據插入的順序進行排序,而是按照給定的比較器進行排序,、TreeSet集合要求集合的項必須繼承Comparable接口,必須實現compareTo方法
TreeSet集合使用時如果在創建TreeSet時沒有指定比較器則會按照集合項中的比較器進行排序,否則按照指定的比較器排序
比如下邊的例子中,1中使用Item類的比較器,2中使用TreeSet實例化時指定的比較器
//1.按照Item中的默認方法進行排序,即按照ID進行排序
SortedSet<Item> items=new TreeSet<>();
// NavigableSet<Item> items = new TreeSet<Item>();
items.add(new Item(11,"wangfenglei"));
items.add(new Item(1,"zhaolili"));
items.add(new Item(2,"zhangsan"));
items.add(new Item(45,"lisi"));
items.add(new Item(6,"王五"));
System.out.println(items);
System.out.println("==========================");
//2.按照指定的Item的userName排序
SortedSet<Item> items2 = new TreeSet<Item>(Comparator.comparing(Item::getUserName));
// NavigableSet<Item> items2 = new TreeSet<Item>(Comparator.comparing(Item::getUserName));
items2.add(new Item(11,"wangfenglei"));
items2.add(new Item(1,"zhaolili"));
items2.add(new Item(2,"zhangsan"));
items2.add(new Item(45,"lisi"));
items2.add(new Item(6,"王五"));
Iterator<Item> iterator2 = items2.iterator();
System.out.println(items2);
Item類的代碼
public class Item implements Comparable<Item> {
private Integer id;
private String userName;
public Item(Integer id,String userName){
this.id=id;
this.userName=userName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public int compareTo(Item o) {
int compare = Integer.compare(id, o.id);
return compare;
}
@Override
public String toString() {
return "Item{" +
"id=" + id +
", userName='" + userName + '\'' +
'}';
}
以上代碼的輸出結果