java 分组取组里面最长的长度
时间: 2023-10-17 21:30:14 浏览: 45
你可以使用 Java 8 的 Stream API 来实现分组取组里面最长的长度,具体代码如下:
```java
Map<Integer, List<String>> groups = Arrays.asList("apple", "banana", "pear", "orange", "grape", "kiwi", "peach")
.stream()
.collect(Collectors.groupingBy(String::length));
int maxLength = groups.keySet().stream().max(Integer::compareTo).orElse(0);
List<String> longestGroup = groups.get(maxLength);
System.out.println("最长的组长度:" + maxLength);
System.out.println("最长的组:" + longestGroup);
```
这段代码将字符串列表按照字符串长度分组,并找出最长的组长度和最长的组。输出结果如下:
```
最长的组长度:6
最长的组:[banana, orange]
```
注意,这段代码假设字符串列表中至少有一个字符串,否则最长的组长度为0。
相关问题
java 分组取组里面集合最长的长度
可以使用 Java 8 中的 Stream API 来实现。假设你有一个 List<List<String>>,表示分组后的字符串列表,可以按如下方式获取每个组中最长的字符串数量:
```
int maxLength = groups.stream()
.mapToInt(group -> group.stream()
.mapToInt(String::length)
.max()
.orElse(0))
.max()
.orElse(0);
```
这里使用了两个 mapToInt 操作符来获取每个分组中最长的字符串长度,然后使用 max 操作符获取每个分组中最长的字符串长度,最后再使用 max 操作符获取所有分组中最长字符串长度的最大值。如果分组为空,则默认最大长度为 0。
java stream 分组取最大值
在Java 8中,可以使用Stream流的groupingBy方法来进行分组并取最大值。下面是一个示例代码:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<String> numStr = Arrays.asList("a=1", "b=2", "a=3", "b=4", "c=5");
Map<String, Integer> collect = numStr.stream()
.map(e -> {
String[] split = e.split("=");
return new NumObj(split[0], Integer.parseInt(split[1]));
})
.collect(Collectors.groupingBy(NumObj::getKey,
Collectors.collectingAndThen(
Collectors.maxBy(Comparator.comparingInt(NumObj::getValue)),
e -> e.get().getValue()
)));
collect.forEach((k, v) -> {
System.out.println(k + ":" + v);
});
}
static class NumObj {
private String key;
private int value;
public NumObj(String key, int value) {
this.key = key;
this.value = value;
}
public String getKey() {
return key;
}
public int getValue() {
return value;
}
}
}
```
输出结果为:
```
a:3
b:4
c:5
```
这段代码首先将字符串列表转换为NumObj对象列表,然后使用groupingBy方法按照NumObj对象的key属性进行分组。在分组的结果中,使用collectingAndThen方法结合maxBy方法来获取每个分组中value属性的最大值。最后,遍历分组结果并输出每个分组的key和对应的最大值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)