在字符串数组中查找最大整数的最佳方法?
Best way to find maximum integer inside a string array?
String[] array = new String[] {"1", "2", "3", "25"};
我想找到该字符串中的最大数字 return 它作为 integer
。
最好的方法是什么,尤其是在性能方面,因为我必须用它解析几百万行?
我能想到的两种解决方案:
Arrays.stream(array).mapToInt(Integer::parseInt).max().orElse(0);
Integer.valueOf(Collections.max(Arrays.asList(array))); //.max returns 0 when empty array
假设以String
表示的整数都是非负数且没有尾随零,则在搜索过程中不需要解析它们。使用自定义比较器,它首先按长度比较字符串,然后按值比较:
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());
String[] array = new String[] {"1", "2", "3", "25"};
我想找到该字符串中的最大数字 return 它作为 integer
。
最好的方法是什么,尤其是在性能方面,因为我必须用它解析几百万行?
我能想到的两种解决方案:
Arrays.stream(array).mapToInt(Integer::parseInt).max().orElse(0);
Integer.valueOf(Collections.max(Arrays.asList(array))); //.max returns 0 when empty array
假设以String
表示的整数都是非负数且没有尾随零,则在搜索过程中不需要解析它们。使用自定义比较器,它首先按长度比较字符串,然后按值比较:
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());