list.stream().sorted 怎么重新转为列表
时间: 2024-06-22 10:04:02 浏览: 176
`List.stream().sorted()` 是Java 8引入的流(Stream) API中对列表进行排序的一种方法。当你对列表的流执行 `sorted()` 操作后,流会返回一个新的已排序的流,但这个操作并不会直接改变原列表,因为它是一个惰性求值的操作,只有当你调用 `.collect(Collectors.toList())` 或者 `.toArray()` 等收集操作时,才会实际创建一个新的列表。
如果你想将排序后的流转换回列表,可以按照以下步骤:
1. 创建一个新的流,对原始列表进行排序:
```java
List<String> originalList = ...; // 假设这是你要排序的列表
Stream<String> sortedStream = originalList.stream().sorted();
```
2. 使用 `collect` 方法将排序后的流转换为列表:
```java
List<String> sortedList = sortedStream.collect(Collectors.toList());
```
或者使用 `toArray` 方法:
```java
Object[] sortedArray = sortedStream.toArray();
List<String> sortedListFromArray = Arrays.asList(sortedArray);
```
这样,`sortedList` 就是一个新的按照指定顺序排列的列表了。
相关问题
matchElement.stream().sorted(Comparator.comparing(MatchElement::getSnapTime).reversed()) 转为LinkedList
您可以使用Java 8的流操作来将一个具有相同排序规则的 `List` 转换为 `LinkedList`。以下是将 `matchElement` 转换为 `LinkedList` 的示例代码:
```java
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
List<MatchElement> matchElement = new ArrayList<>(); // 假设这是您的 MatchElement 列表
LinkedList<MatchElement> linkedList = matchElement.stream()
.sorted(Comparator.comparing(MatchElement::getSnapTime).reversed())
.collect(Collectors.toCollection(LinkedList::new));
```
在上述示例中,我们使用 `stream()` 将 `matchElement` 列表转换为流。然后,我们使用 `sorted()` 方法和自定义的比较器来按指定的排序规则进行排序(这里根据 `SnapTime` 属性进行降序排序)。最后,我们使用 `collect()` 方法将流中的元素收集到一个新的 `LinkedList` 实例中。
请注意,要使上述代码正常运行,您需要替换 `MatchElement` 类型为实际的类名,并确保 `getSnapTime()` 方法返回一个可比较的值。
希望这可以帮助到您!如果您有任何其他问题,请随时提问。
Map<String, TBmwyResolvedevicedata> sortedMap = dataList.stream() .sorted(Comparator.comparing(TBmwyResolvedevicedata::getEndTime)) .collect(Collectors.toMap(TBmwyResolvedevicedata::getEndTime, Function.identity(), (oldValue, newValue) -> oldValue, LinkedHashMap::new)); 转为List
要将这个 `Map` 转为 `List`,可以通过 `stream()` 方法将 `Map` 中的键值对转为 `Stream`,再通过 `map()` 方法将其转为 `List` 中的元素类型,最后通过 `collect()` 方法将 `Stream` 转为 `List`。
具体代码如下:
```
List<TBmwyResolvedevicedata> sortedList = sortedMap.entrySet().stream()
.map(Map.Entry::getValue)
.collect(Collectors.toList());
```
这段代码中,`sortedMap.entrySet()` 返回一个 `Set<Map.Entry<String, TBmwyResolvedevicedata>>`,其中每一个 `Map.Entry<String, TBmwyResolvedevicedata>` 包含一个键和一个值。调用 `stream()` 方法可以将其转为 `Stream<Map.Entry<String, TBmwyResolvedevicedata>>`。接下来通过 `map()` 方法将每个 `Map.Entry` 转为其值(即 `TBmwyResolvedevicedata`),最后通过 `collect()` 方法将 `Stream` 转为 `List`。
阅读全文