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

番石榴:为什么没有Lists.filter()函数?

楚皓君
2023-03-14
问题内容

有没有理由

Lists.transform()

但不是

Lists.filter()

如何正确过滤列表?我可以用

new ArrayList(Collection2.filter())

当然可以,但是如果我理解正确的话,就不能保证我的订购顺序保持不变。


问题答案:

它之所以未实现,是因为它会在返回的List视图上暴露大量危险的慢速方法,例如#get(index)(会引发性能错误)。ListIterator也很难实现(尽管我几年前提交了一个补丁来解决)。

由于索引方法在过滤后的列表视图中效率不高,因此最好使用不包含它们的过滤后的Iterable。



 类似资料:
  • 我对番石榴很陌生(说实话,我不是“很新”,我是这个主题的新手),所以我决定浏览一些文档,在阅读本文时感到非常惊讶: 我不明白这个方法的意义。这意味着,与其这样做,不如: (如果myObject为null,这可能会导致) 我应该用 如果为空,这将抛出一个,如果它不是空,则返回。 我很困惑,这可能是有史以来最愚蠢的问题,但是... 这有什么意义?这两条线和我能想到的任何情况下的结果是完全一样的。 我甚

  • 我想为番石榴设个坑(http://pitest.org/)进行突变熟练度测试,但我在尝试运行时出现以下错误。这是我得到的错误: 基本上,要么PIT没有检测到测试,要么测试在PIT中运行不正常,所有测试都失败了。我读了这篇文章:JUnit测试通过,但PIT说套件不是绿色的,我认为“您的代码库是否包含可变静态状态?(例如在单例中)”是问题所在,但我不知道如何修复它。如果测试套件有一些隐藏的顺序依赖关系

  • 问题内容: 我是番石榴的新手(老实说,我不是“新手”,我是这个主题的新手),所以我决定阅读一些文档,并在阅读本文时感到非常惊讶: 我不明白这种方法的意义。这意味着不要这样做: (如果myObject为null ,则可能会导致) 我应该用 这 将 抛出如果是空和返回,如果它不为空。 我很困惑,这可能是有史以来最愚蠢的问题,但是… 这有什么意义呢?在我能想到的任何情况下,这两行所做的事情与结果完全一样

  • 问题内容: 刚刚发现了Guava库项目。 这些与GWT兼容吗? 问题答案: 从该页面的介绍性PDF中, 您可以在…上使用这些库。 在JDK 6上 在Android上, 我们认为。需要志愿者来帮助我们进行测试。 在Google App Engine上, 我们认为。需要志愿者来帮助我们进行测试。 在GWT上-参差不齐! 由于GWT的JDK库支持 可能参差不齐,也许是2/3,所以到目前为止,这些库中的东

  • 问题内容: 我只是看着番石榴,发现该方法被重载了12次。 在我看来,他们所需要的只是: 有这么多类似变体的原因是什么? 问题答案: Varargs和泛型不能很好地配合使用。Varargs方法可能会引发带有通用参数的警告,并且重载会阻止该警告,除非在极少数情况下,您想使用来向不可变列表中添加11个以上的项。 资料中的评论说: 这些多达十一。在那之后,您仅获得varargs表单,并且可能伴随任何警告。

  • 问题内容: 从Effective Java Second Edition的第28项开始:“不要将通配符类型用作返回类型。与其为用户提供额外的灵活性,不如将其强制在客户端代码中使用通配符类型。” 我刚开始接触通用通配符,以了解我在编写的一段代码中最后一次未经检查的强制转换警告,而且我不明白为什么getRawType()返回通配符类型。 我必须转换token.getRawType()因为它返回一个 问