【问题标题】:Filter Java Collection without changing the original collection在不改变原始集合的情况下过滤 Java 集合
【发布时间】:2016-06-30 09:54:38
【问题描述】:

如何过滤 Android 中的 java 集合以保留我的原始集合?

原始集合必须保持不变,对过滤集合所做的任何更改都应该只影响它而不影响原始集合。

是否可以在不添加另一个库的情况下实现这一目标?我读过 apache 和 guava 可能会使这个过程更容易。

【问题讨论】:

  • 你不能只获取一个流并过滤它吗?
  • 我需要这个才能在 Android @ChiefTwoPencils 上工作

标签: java android collections filtering


【解决方案1】:

如您所见,运行以下代码 (Java 8) 不会修改原始集合:

    List<Integer> lst = new LinkedList<>();
    lst.add(1);
    lst.add(2);
    lst.add(3);
    lst.add(4);
    lst.add(5);
    lst.stream()
            .filter(x -> (x % 2 == 0))
            .collect(Collectors.toList())
            .forEach(x -> System.out.print(x + " "));

    System.out.println("\n==============");
    System.out.println(Arrays.toString(lst.toArray()));

输出

2 4 
==============
[1, 2, 3, 4, 5]

【讨论】:

  • 安卓平台需要这个。我看到了一个与您创建的示例类似的示例,尽管它不适合我的情况。 @alfasin
  • 适用于 Android 的轻量级 Stream Api 怎么样? github.com/aNNiMON/Lightweight-Stream-API@Rohan
  • 我正在尝试让它在不添加其他依赖项的情况下工作。
  • @Rohan 您没有在问题中指定究竟您的情况是什么...也就是说,您总是可以创建一个deep-copy收藏 - 转换副本并保持原件不变。
猜你喜欢
  • 2020-02-27
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 2013-07-28
  • 2012-03-29
  • 1970-01-01
  • 2019-06-13
相关资源
最近更新 更多