在這個例子中,我將這個列表累加到LinkedList。
LinkedList實現了Deque(雙端隊列),它允許我以後進先出(LIFO)順序追加項目。
我使用LinkedList :: addFirst在collect方法中執行累加,將LinkedList中的項目讀入列表頭部。
public static void main(final String... args) {
final List<String> objList = Arrays.asList("1", "2", "3", "4", "5", "6", "7");
final List<String> reversed = objList.stream()
.collect(LinkedList::new, LinkedList::addFirst, LinkedList::addAll);
//[7, 6, 5, 4, 3, 2, 1]
System.out.println(reversed);
}
下面的解決方案是好的,但我不喜歡關閉原來的列表。
public static void main(final String... args) {
final List<String> objList = Arrays.asList("1", "2", "3", "4", "5", "6", "7");
final List<String> reversed = IntStream.range(-(objList.size() - 1), 1)
.mapToObj(i -> objList.get(-i))
.collect(Collectors.toList());
//[7, 6, 5, 4, 3, 2, 1]
System.out.println(reversed);
}
你覺得你的'map(i - > i)'實際上做了什麼? –
我展示了我在圖片 –
中理解的不完全解決方案,但更簡單地使用apache lib http://stackoverflow.com/a/2138004/1897935 –