Java 在一条语句中查找无序数组中最大(或最小)的元素,同时保持顺序
我知道如何找到Java中最大和最小的元素:Java 在一条语句中查找无序数组中最大(或最小)的元素,同时保持顺序,java,arrays,algorithm,Java,Arrays,Algorithm,我知道如何找到Java中最大和最小的元素: 对数组进行排序 使用for循环在数组上迭代并检查最小值 但是有没有一种方法可以检查一个语句中的最大值或最小值?此外,还需要维护秩序 条件: 同一类中没有方法调用 序列未排序,并且保持未排序状态 无法访问外部库(即不允许ArrayUtils) 假设这是一个普通Java数组,即int[],而不是ArrayList或LinkedList 示例: Integer arr[] = {7, 8, 1, 2, 6}; System.out.println(Colle
ArrayUtils
)int[]
,而不是ArrayList
或LinkedList
示例:
Integer arr[] = {7, 8, 1, 2, 6};
System.out.println(Collections.min(Arrays.asList(arr)));
System.out.println(Collections.max(Arrays.asList(arr)));
1
8
输出:
Integer arr[] = {7, 8, 1, 2, 6};
System.out.println(Collections.min(Arrays.asList(arr)));
System.out.println(Collections.max(Arrays.asList(arr)));
1
8
如果必须使用
int[]
而不是Integer[]
和建议的单语句约束,则可以使用函数将int[]
转换为相应的包装类Integer[]
。但是我不认为您会使用外部库。如果它是自然排序的,那么最大和最小的元素是first/last或last/first元素(取决于排序顺序),为什么要循环!?哦,对不起,它是未排序的(我在标题中添加了无序,但意思是未排序)。@user473973 RC的意思是:如果在步骤1中对数组进行排序,则不必循环,因为最小的元素是数组的第一个元素-排序通常就是这样做的!有点作弊,但由于asList()
wrapps数组,它可能是允许的。为了提高性能,直接阵列访问将更快,因此请注意大型阵列。这不适用于int[]
howeveryup,但OP需要在一条语句中执行操作。这里有一句话;):P