4 回答

TA贡献1995条经验 获得超2个赞
您可以使用和比较长度:Arrays.stream
String names[]={"John","Malisa","Stack Overflow"};
Optional<String> max = Arrays.stream(names)
.max(Comparator.comparingInt(String::length));
System.out.println(max.orElse("none"));
断续器我没有正确理解你的问题。您可以使用此代码获取最大元素的索引:
String names[]={"John","Malisa","Stack Overflow"};
int index = IntStream.range(0, names.length)
.reduce((i, j) -> names[i].length() > names[j].length() ? i : j)
.getAsInt();
System.out.println(index);

TA贡献1827条经验 获得超8个赞
只需使用 :-
Arrays.stream(names) .sorted(Comparator.comparing(String::length,Comparator.reverseOrder())) .findFirst() .get()

TA贡献2016条经验 获得超9个赞
以下是同时获取最长字符串及其索引的另一种方法:
String[] names = {"John", "Malisa", "Stack Overflow"};
Optional<Map.Entry<String, Integer>> result = IntStream.range(0, names.length).boxed()
.collect(Collectors.toMap(i -> names[i], Function.identity()))
.entrySet().stream()
.max(Comparator.comparing(e -> e.getKey().length()));
result.ifPresent(e -> System.out.println("Longest String: '" + e.getKey() + "' at index " + e.getValue()));
这将创建一个包含字符串及其索引的映射。之后,它将返回具有最长字符串的条目。
数组的结果是:names
Longest String: 'Stack Overflow' at index 2
添加回答
举报