是否有一种从列表(特别是数组列表,但没关系)中获取有序流的合理方法,该方法以与原始列表相反的方式流元素?
我正在寻找一种不涉及在任何东西(收集器,另一个列表,数组等)中缓冲数据的解决方案,因为它们会复制浪费的容器或使用Collections.reverse
(因为它会修改列表)。
到目前为止,我在这里看到的最干净的方法是实现自己的版本Spliterator
,ORDERED
并以相反的Iterator
方式遍历列表,或者实现以反向方式进行迭代并Spliterators.spliteratorUnknownSize(iterator,ORDERED)
在其上使用。
请注意,此问题与Java8流反向顺序不同:另一个问题询问如何反向流(一般情况下这是不可能的),答案提供了以某种方式反向源(我不想这样做),然后流式传输反向源。反转源的成本为O(N),如果可能,我想完全避免。
如果您List
是随机访问列表,则可以简单地使用
int num=list.size()-1;
IntStream.rangeClosed(0, num).mapToObj(i->list.get(num-i))
创建Stream
具有特征ORDERED | SIZED | SUBSIZED
并提供完全拆分支持的。
但是,对于像LinkedList
这样的非随机访问列表而言,这将是性能损失,但是,谁使用它LinkedList
呢?
您也可以先通过listinstanceof
RandomAccess
…进行检查。
我正在寻找一种解决方案,它不涉及在任何东西中缓冲数据(收集器、另一个列表、数组等,因为它们复制容器是浪费的),或者使用(因为它修改列表)。 到目前为止,我在这里看到的最简洁的方法是实现我自己版本的,即并反向遍历列表,或者实现一个并对其使用。 注这个问题不同于Java8的流反转顺序:另一个问题询问如何反转一个流(这在一般情况下是不可能的),答案是以某种方式反转源代码(我不想这么做),然后流反转的源代
问题内容: 我尝试了一个小时,但没有找到任何最佳方法来实现反向的哈希图迭代,这就是我拥有的哈希图。 我也看过TreeMap的例子, 但是treemap也按升序给出,我想要的是降序。 问题答案: Hashmap没有特定的顺序。但是您可以使用TreeMap。 也许这个简单的例子可以帮助您:
我按直接顺序列出了列表1<代码>列表 如何更改顺序。我不知道如何重写扩展类中的方法,请用例子写或说清楚。
我将感谢任何帮助,我是一个初学者,因为你可能会告诉。提前谢谢大家! 我可以用递归来做这个,但我想学习弄清楚这个方法。
我尝试测试对我的Web API的1个HTTP POST XML请求,XML如下所示: 当我用如下类列表反序列化请求时: 类体: 班级团结: 类别密钥: 反序列化后,我得到了除了键列表项的值之外的所有属性。(
但这只有在保证先设置start的情况下才起作用。