mem*_*und 4 java java-8 java-stream
String[] array = new String[] {"1", "2", "3", "25"};
Run Code Online (Sandbox Code Playgroud)
我想找到该字符串中的最大数字并将其作为一个返回integer.
什么是最好的方法,特别是在性能方面,因为我必须解析几百万行?
我能想到的两个解决方案:
Arrays.stream(array).mapToInt(Integer::parseInt).max().orElse(0);
Integer.valueOf(Collections.max(Arrays.asList(array))); //.max returns 0 when empty array
Run Code Online (Sandbox Code Playgroud)
假设呈现为Strings的整数都是非负数且没有尾随零,则在搜索期间不需要解析它们.使用自定义比较器,首先按长度比较字符串,然后按值比较:
import static java.util.Comparator.*;
//...
String[] s = {"1", "2", "3", "25"};
Optional<String> max = Stream.of(s).max(comparingInt(String::length).thenComparing(naturalOrder()));
int maxInt = Integer.parseInt(max.get());
Run Code Online (Sandbox Code Playgroud)