我的用例如下:
我想要使用自然顺序插入某些元素(在我的情况下,假设是从更便宜的价格开始的价格列表)。
我必须存储的对象遵循以下类:
class Article { int id; int price; }
我在考虑TreeSet
,但Set
没有get
方法,因此根据我的经验,更新元素需要迭代Set以找到正确的对象
现在我选择了我需要时订购的List
,但如果您认为可以满足我的要求或者有更好的方法,我会很好奇。
由于
答案 0 :(得分:0)
如果我理解你的问题,基本上你只想让你的元素遵循一个顺序:
您可以使用Collections.sort()
和实现Comparator<E>
的类的组合。
import java.util.*;
// class used to compare "price"
class priceComparator implements Comparator<Article> {
@Override
public int compare(Article o1, Article o2) {
return o1.price - o2.price;
}
}
public class Article {
int id;
int price;
public Article(int id, int price) {
this.id = id;
this.price = price;
}
public static void main(String[] args) {
List<Article> list = new ArrayList<>();
list.add(new Article(1, 4000));
list.add(new Article(2, 7000));
list.add(new Article(3, 1000));
// sorting Article based on "price" ASCENDING
Collections.sort(list, new priceComparator());
// sorting Article based on "price" DESCENDING
//Collections.sort(list, Collections.reverseOrder(new priceComparator()));
// put the sorted pair of "id" and "price" into map
Map<Integer,Integer> map = new LinkedHashMap<>();
for(Article l : list){
map.put(l.id, l.price);
}
System.out.println("Id | Price");
for(Map.Entry<Integer,Integer> elemenOfMap: map.entrySet()){
System.out.println(elemenOfMap.getKey() +" | "+elemenOfMap.getValue());
}
}
}
输出:
Id | Price
3 | 1000
1 | 4000
2 | 7000