首页 > 解决方案 > 从元素列表中找到最大值/最小值

问题描述

我有一堂课:

public class item{
      TypeEnum type;
      double value;
}



 public enum TypeEnum {
    max,
    min
}

我有一个像这样的项目的ArrayList:{min,max,max,max,min,min,min,max,min}

列表中的每一项都是具有 {type(min/max), value} 的对象。

我想将其转换为:{min,max,min,max}(保持相同的顺序只需替换 max,max,max ===> 最大的,而不是基于值)。

我想只用最大的一套替换最大的西装,用最小的一套替换最小的西装。

标签: javaspringlistalgorithmarraylist

解决方案


您可以尝试“就地”执行此操作,修改您的原始列表,但创建一个新列表会更简单,添加每个序列的最小值或最大值。

System.out.println(items);
        
List<Item> newItems = new ArrayList<>();
for(int i=0; i<items.size(); )
{
    Item pick = items.get(i);
    for(i += 1; i < items.size() && pick.type == items.get(i).type; i++)
    {
        if((pick.value > items.get(i).value) == (pick.type == TypeEnum.MIN))
            pick = items.get(i);
    }
    newItems.add(pick);
}
        
System.out.println(newItems);

输出:

[(MIN:4), (MAX:1), (MAX:5), (MAX:3), (MIN:7), (MIN:4), (MIN:1), (MAX:6), (MIN:5)]
[(MIN:4), (MAX:5), (MIN:1), (MAX:6), (MIN:5)]

推荐阅读