筛选大字符串

我有一个String数组,任务是找出数组中最长的字符串以及该字符串的位置。我想知道我是否可以将数组转换为列表,通过使用流,我可以解决同样的问题。任何帮助将不胜感激


我已经使用传统方法解决了这个问题,使用循环和一些if条件


String names[]={"John","Malisa","Stack Overflow"};


String b=names[i];

int max=b.length();


for(int i=1;i<names.length;i++) {

    if(max<names[i].length) {

        max=names[i].length;

        b=names[i];

    }

}


天涯尽头无女友
浏览 111回答 4
4回答

ITMISS

不需要方法来查找数组中最长的字符串。将最大值与比较器配合使用:filterString&nbsp;max&nbsp;=&nbsp;Arrays.stream(names) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.max(Comparator.comparingInt(String::length)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.orElse("");要查找此元素的索引,请使用:int&nbsp;index&nbsp;=&nbsp;Arrays.asList(names).indexOf(max);

拉风的咖菲猫

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

斯蒂芬大帝

只需使用 :-Arrays.stream(names) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.sorted(Comparator.comparing(String::length,Comparator.reverseOrder())) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.findFirst() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.get()

慕沐林林

以下是同时获取最长字符串及其索引的另一种方法:String[] names = {"John", "Malisa", "Stack Overflow"};Optional<Map.Entry<String, Integer>> result = IntStream.range(0, names.length).boxed()&nbsp; &nbsp; &nbsp; &nbsp; .collect(Collectors.toMap(i -> names[i], Function.identity()))&nbsp; &nbsp; &nbsp; &nbsp; .entrySet().stream()&nbsp; &nbsp; &nbsp; &nbsp; .max(Comparator.comparing(e -> e.getKey().length()));result.ifPresent(e -> System.out.println("Longest String: '" + e.getKey() + "' at index " + e.getValue()));这将创建一个包含字符串及其索引的映射。之后,它将返回具有最长字符串的条目。数组的结果是:namesLongest String: 'Stack Overflow' at index 2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java