Nic*_*ner 169 java arrays algorithm frameworks
编写一个函数来确定数组中的最小/最大值是很简单的,例如:
/**
*
* @param chars
* @return the max value in the array of chars
*/
private static int maxValue(char[] chars) {
int max = chars[0];
for (int ktr = 0; ktr < chars.length; ktr++) {
if (chars[ktr] > max) {
max = chars[ktr];
}
}
return max;
}
Run Code Online (Sandbox Code Playgroud)
但这不是已经在某处做过的吗?
Mic*_*urd 164
使用Commons Lang(转换)+集合(最小/最大)
import java.util.Arrays;
import java.util.Collections;
import org.apache.commons.lang.ArrayUtils;
public class MinMaxValue {
public static void main(String[] args) {
char[] a = {'3', '5', '1', '4', '2'};
List b = Arrays.asList(ArrayUtils.toObject(a));
System.out.println(Collections.min(b));
System.out.println(Collections.max(b));
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,Arrays.asList()
包装底层数组,因此它不应该太占用内存,也不应该对数组元素执行复制.
Ort*_*kni 77
你可以简单地使用新的Java 8 Stream
小号,但你必须一起工作int
.
stream
实用程序类的方法Arrays
为您提供了IntStream
可以使用该min
方法的方法.你也可以做max
,sum
,average
,...
该getAsInt
方法用于从中获取值OptionalInt
import java.util.Arrays;
public class Test {
public static void main(String[] args){
int[] tab = {12, 1, 21, 8};
int min = Arrays.stream(tab).min().getAsInt();
int max = Arrays.stream(tab).max().getAsInt();
System.out.println("Min = " + min);
System.out.println("Max = " + max)
}
}
Run Code Online (Sandbox Code Playgroud)
== ==更新
如果执行时间很重要,并且只想一次使用这样的summaryStatistics()
方法就可以浏览数据
import java.util.Arrays;
import java.util.IntSummaryStatistics;
public class SOTest {
public static void main(String[] args){
int[] tab = {12, 1, 21, 8};
IntSummaryStatistics stat = Arrays.stream(tab).summaryStatistics();
int min = stat.getMin();
int max = stat.getMax();
System.out.println("Min = " + min);
System.out.println("Max = " + max);
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法可以提供比经典循环更好的性能,因为该summaryStatistics
方法是简化操作并且允许并行化.
And*_*lay 57
在谷歌番石榴库拥有分钟,并在其字符数,类型int,long等类最大的方法.
所以你可以简单地使用:
Chars.min(myarray)
Run Code Online (Sandbox Code Playgroud)
不需要转换,并且可能是有效实施的.
Bar*_*ers 20
是的,它是在Collections类中完成的.请注意,您需要手动将原始char数组转换为Character [].
一个简短的演示:
import java.util.*;
public class Main {
public static Character[] convert(char[] chars) {
Character[] copy = new Character[chars.length];
for(int i = 0; i < copy.length; i++) {
copy[i] = Character.valueOf(chars[i]);
}
return copy;
}
public static void main(String[] args) {
char[] a = {'3', '5', '1', '4', '2'};
Character[] b = convert(a);
System.out.println(Collections.max(Arrays.asList(b)));
}
}
Run Code Online (Sandbox Code Playgroud)
小智 15
import java.util.Arrays;
public class apples {
public static void main(String[] args) {
int a[] = {2,5,3,7,8};
Arrays.sort(a);
int min =a[0];
System.out.println(min);
int max= a[a.length-1];
System.out.println(max);
}
}
Run Code Online (Sandbox Code Playgroud)
Sau*_*uer 11
我在我的所有应用程序中都有一个小助手类,其方法如下:
public static double arrayMax(double[] arr) {
double max = Double.NEGATIVE_INFINITY;
for(double cur: arr)
max = Math.max(max, cur);
return max;
}
Run Code Online (Sandbox Code Playgroud)