从元素列表中找到 max/min
find the max/min from a list of elements
我有一个 class:
public class item{
TypeEnum type;
double value;
}
public enum TypeEnum {
max,
min
}
我有一个像这样的项目的数组列表:{min, max, max ,max, min, min, min, max, min}
列表中的每一项都是一个具有{type(min/max), value}的对象。
我想将其转换为:{min, max, min, max}(保持相同的顺序只需替换 max, max, max ===> 最大的一个而不是基于值)。
我想用最大的花色替换最大花色,用最小的花色替换最小花色。
您可以尝试“就地”执行此操作,修改您的原始列表,但创建新列表、添加每个序列的最小值或最大值会简单得多。
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)]
我有一个 class:
public class item{
TypeEnum type;
double value;
}
public enum TypeEnum {
max,
min
}
我有一个像这样的项目的数组列表:{min, max, max ,max, min, min, min, max, min}
列表中的每一项都是一个具有{type(min/max), value}的对象。
我想将其转换为:{min, max, min, max}(保持相同的顺序只需替换 max, max, max ===> 最大的一个而不是基于值)。
我想用最大的花色替换最大花色,用最小的花色替换最小花色。
您可以尝试“就地”执行此操作,修改您的原始列表,但创建新列表、添加每个序列的最小值或最大值会简单得多。
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)]