ArrayList<String>分组
时间: 2023-07-19 18:08:25 浏览: 86
可以使用Java 8的Stream API来对ArrayList<String>进行分组操作。
假设要将一个ArrayList<String>按照字符串长度分组,可以使用以下代码:
```
Map<Integer, List<String>> groups = list.stream()
.collect(Collectors.groupingBy(String::length));
```
其中,list为要进行分组的ArrayList<String>,groupingBy方法中的String::length表示按照字符串长度进行分组,返回的结果是一个Map<Integer, List<String>>,其中键为字符串长度,值为对应长度的字符串列表。
如果需要按照其他条件进行分组,只需要修改groupingBy方法中的Lambda表达式即可。
相关问题
List<String> dateList = new ArrayList<>();按EndTime分组并且排序用升序
可以通过以下步骤来实现按EndTime分组并升序排序:
1. 将List中的元素按照EndTime属性进行分组,可以使用Java 8的Stream API中的groupingBy方法实现。
2. 将分组后的Map中的Entry对象转换为List集合。
3. 通过Collections.sort方法对List集合进行排序,排序时需要传入一个Comparator对象,可以使用Lambda表达式实现按照Entry的key升序排列。
4. 将排序后的List集合中的元素的key属性添加到新的List中。
代码示例:
```java
Map<String, List<String>> groupedMap = dateList.stream()
.collect(Collectors.groupingBy(s -> s.split(",")[2])); // 假设EndTime在字符串的第三个位置
List<Map.Entry<String, List<String>>> entryList = new ArrayList<>(groupedMap.entrySet());
Collections.sort(entryList, (o1, o2) -> o1.getKey().compareTo(o2.getKey()));
List<String> sortedDateList = new ArrayList<>();
for (Map.Entry<String, List<String>> entry : entryList) {
sortedDateList.addAll(entry.getValue());
}
```
其中,比较器使用了Lambda表达式实现。如果你的Java版本比较低,可以使用匿名内部类实现。
希望这个回答能够帮到你!
List<List<String>> allGroups = new ArrayList<List<String>>();转成List<String>allGroups
将二维列表 `List<List<String>> allGroups` 转换为一维列表 `List<String> allGroups` 可以使用双重循环遍历二维列表并将其元素添加到一维列表中,代码如下:
```java
List<String> allGroups = new ArrayList<String>();
for (List<String> group : allGroups) {
for (String item : group) {
allGroups.add(item);
}
}
```
这段代码首先遍历二维列表 `allGroups` 中的每一个分组 `group`,然后再遍历分组中的每一个元素 `item`,并将其添加到一维列表 `allGroups` 中。这样就可以将二维列表转换为一维列表了。
阅读全文