当前位置: 首页 > 面试题库 >

如何在Java中的列表上获取反向列表视图?

高奇
2023-03-14
问题内容

我想在列表上有一个反向列表视图(以与List#sublist在列表上提供子列表视图类似的方式)。是否有提供此功能的功能?

我既不想复制列表,也不想修改列表。

在这种情况下,如果我至少可以在列表上获得一个反向迭代器就足够了。

另外,我知道自己如何实施。我只是问Java是否已经提供了类似的东西。

演示实现:

static <T> Iterable<T> iterableReverseList(final List<T> l) {
    return new Iterable<T>() {
        public Iterator<T> iterator() {
            return new Iterator<T>() {
                ListIterator<T> listIter = l.listIterator(l.size());                    
                public boolean hasNext() { return listIter.hasPrevious(); }
                public T next() { return listIter.previous(); }
                public void remove() { listIter.remove(); }                 
            };
        }
    };
}

我刚刚发现有些List实现descendingIterator()正是我所需要的。尽管没有通用的实现List。这有点奇怪,因为我所见过的实现LinkedList足以与任何实现一起使用List


问题答案:

番石榴提供此功能:Lists.reverse(List)

List<String> letters = ImmutableList.of("a", "b", "c");
List<String> reverseView = Lists.reverse(letters); 
System.out.println(reverseView); // [c, b, a]

不像Collections.reverse,这纯粹是一个 视图
…它不会改变原始列表中元素的顺序。此外,使用可修改的原始列表,对原始列表和视图的更改都会反映在另一个列表中。



 类似资料:
  • 问题内容: 我正在寻找一种列出数据库中所有视图的方法。 最初,我在MySQL论坛上找到并尝试了一个答案: 这怎么行不通,返回一个空集。(我知道他们在那里!) 这些也会失败: 为什么这不起作用? 问题答案: MySQL查询以查找数据库中的所有视图

  • 问题内容: 我有一个Java API,它返回的列表如下: 我正在使用以下scala代码: 现在,如果我尝试使用scala语法糖,例如: 这是行不通的。我得到错误: 看来我需要将Java列表转换为Scala列表。在上述情况下该怎么做? 问题答案: 从 Scala 2.8开始, 此转换现在已使用以下语言构建: 作品。不工作 在2.12.x中使用 在2.13.x中使用

  • 问题内容: 我正在寻找获得Android中表格可用列名的代码吗? 我环顾四周,没有找到任何东西。 问题答案: 这是一种更简单的方法:

  • 请求header GET /v1/videos Authorization:Bearer {ACCESS TOKEN} Content-Type:application/json 注: 请将上方的{ACCESS TOKEN}替换为您的ACCESS TOKEN 可选参数 title=视频名称&act_id=视频所属频道id&manager=频道管理员ID&perPage=每页显示条数&p=页码 可

  • 问题内容: 有人可以告诉我为什么我的代码有效吗?我想在Java中反转单个链接列表:这是方法(无法正常工作) 这是Node类: 在输入4-> 3-> 2-> 1上,我得到了输出4。我对其进行了调试,它正确设置了指针,但是我仍然不明白为什么它仅输出4。 问题答案: Node next = tmp.next; while(tmp != null){ 那么,当tmp == null时会发生什么呢? 不过,