我有一个包含4个对象的列表,每个对象都有4个属性。我要删除具有最大第四属性的对象。
这就是我所做的。
double temp = 0.0;
List<type> list1=new ArrayList<>(); //this list has 4 objects
List<Double> attribute1List = new ArrayList<>(); //list of attribute1
for(int i = 0; i < list1.size(); i++) {
attribute1List.add(Double.parseDouble(list1.get(i).getattribute1()));
}
for (int i = 0; i < attribute1List.size(); i++) {
if (attribute1List.get(i) > temp){
temp = attribute1List.get(i); //temp is the greatest
}
}
因为温度给了我最大的好处。因此,现在如何获取list1中最大的索引,以便可以从list1中删除特定对象。
答案 0 :(得分:2)
您可以这样做简化
double temp = 0.0;
List<type>list1=new ArrayList<>();//this list has 4 objects
type biggest = null;
for (type t : list1)
if((Double.parseDouble(t.getattribute1()) > temp){
biggest = t;
temp = t.getattribute1();
}
}
// then remove biggest - should check not null
list1.remove (biggest);
答案 1 :(得分:0)
这应该有效。
Plate Color Model Owner Name Release Date
CDA 125 Black Astra Alexander Knight 2019-06-21 06:38:52
答案 2 :(得分:0)
只需添加一个变量作为索引。如下所示,然后从列表中删除该项目:
double temp = 0.0;
List<type>list1=new ArrayList<>();//this list has 4 objects
List<Double> attribute1List=new ArrayList<>();//list of attribute1
for (int i = 0; i < list1.size(); i++) {
attribute1List.add(Double.parseDouble(list1.get(i).getattribute1()));
}
int index = 0;
for (int i = 0; i < attribute1List.size(); i++) {
if (attribute1List.get(i) > temp){
temp = attribute1List.get(i); //temp is the greatest
index = i;
}
}
list1.remove(index);
答案 3 :(得分:0)
我建议您为此使用TreeMap
。使用treemap
,具有最大价值的对象将最后被存储(因为 treeMap 以已排序的顺序存储价值),然后您可以从{ {1}}。
答案 4 :(得分:0)
在Java 8中,应该是这样的:
Type element = list1.stream().max(Comparator.comparing(Type::getAttribute1())).get();
然后将其删除
list1.remove(element);
答案 5 :(得分:0)
list = list.stream()
.sorted((Comparator.comparingDouble(Type::getattribute4).reversed())) // sorting DESC by atr4
.skip(1) // skip first bigger
.collect(Collectors.toList()); // collect into new list and replace old on =