根据排序从Arraylist中删除对象

时间:2019-06-20 07:52:07

标签: java android arraylist

我有一个包含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中删除特定对象。

6 个答案:

答案 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 =