我在List
中使用java8
。
我有一个包含自定义类对象的列表。我需要根据对象属性以对象的形式填充此列表,并且在排序后我需要在列表中应用限制。
例如
public class TempClass {
String name; int count;
//... Getter, setter and constructor
}
// Suppose I have a list with TempClass
List<TempClass> tempList = new ArrayList<>();
// There are five obj Of TempClass
TempClass obj1, obj2, obj3, obj4, obj5;
// I need to insert these object according to "count" property
// Suppose obj1.getCount = 10, obj2 = 7, obj3 = 11, obj4 = 8, obj5=12
/* I need to add element in order
0 - obj5
1 - obj1
2 - obj3
3 - obj4
4 - obj2
*/
第二件事我需要在排序后在List
中应用限制。在这种情况下,我只需要Top中的3个元素obj5, obj1, obj3
请告诉我怎么办?我正在使用java8和Google云 端点
答案 0 :(得分:0)
我找到了答案。
对于List
排序,使用lambda表达式或Comparable。
喜欢这个。
tempList.sort(Comparator.comparingInt(t -> t.getCount()));
并且限制。
tempList= tempList.stream().limit(3).collect(Collectors.toList());
答案 1 :(得分:0)
PriorityQueue<TempClass> queue = new PriorityQueue<>(Comparator.comparingInt(TempClass::getCount));
for (TempClass temp : tempList) {
queue.offer(temp);
if (queue.size() > 3) {
queue.poll();
}
}
LinkedList<TempClass> result = new LinkedList<>();
while (queue.size() > 0) {
result.push(queue.poll()); //obj5, obj1, obj3
}