如果经常会去搜索集合中的某一项建议使用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 + '\'' +
'}';
}
以上代码的输出结果