据我所知,在Java 8中,Map的工作原理如下
的数据例如:
List<String> objList = Arrays.asList("1", "2", "3", "4", "5", "6", "7"); objList.stream().map( i -> i ). forEach( i -> System.out.print(" " + i));
List<String> objList = Arrays.asList("1", "2", "3", "4", "5", "6", "7");
objList.stream().map( i -> i ). forEach( i -> System.out.print(" " + i));
字符串产出:但我的问题是:**我如何做反向Map?**像
的所以输出是这样的
7 6 5 4 3 2 1
型还是不可能这样做?
sg3maiej1#
在这个例子中,我将列表累积为LinkedList。LinkedList实现了Deque(双端队列),它允许我以后进先出(LIFO)的顺序追加项目。我使用LinkedList::addFirst在collect方法中执行累加,它将从流中读取的项放置在列表的头部。
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 = 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);}
final List<String> reversed = IntStream.range(-(objList.size() - 1), 1)
.mapToObj(i -> objList.get(-i))
.collect(Collectors.toList());
型
2eafrhcq2#
从Java 21开始,List有相反的方法,所以一种解决方案是流到List(如您的示例中所示),然后在其上调用reversed()。
List
reversed()
objList.stream().map(i -> i).reversed().forEach(i -> System.out.print(" " + i));
字符串
2条答案
按热度按时间sg3maiej1#
在这个例子中,我将列表累积为LinkedList。
LinkedList实现了Deque(双端队列),它允许我以后进先出(LIFO)的顺序追加项目。
我使用LinkedList::addFirst在collect方法中执行累加,它将从流中读取的项放置在列表的头部。
字符串
下面的解决方案是确定的,但我不喜欢关闭了原来的列表。
型
2eafrhcq2#
从Java 21开始,
List
有相反的方法,所以一种解决方案是流到List
(如您的示例中所示),然后在其上调用reversed()
。字符串