【问题标题】:Partition an array into two arrays in only one pass?一次将一个数组分成两个数组?
【发布时间】:2012-03-09 22:35:36
【问题描述】:

我想通过一个数组并创建两个新数组:一个包含满足特定条件的元素,另一个不满足。

这是否可能一次通过,或者我必须通过两次:一次确定新数组应该有多大,然后再次填充这些数组?我可以看到这将如何与另一种编程语言或不同的数据结构一起使用,但对于 java,这似乎是不可能的。

【问题讨论】:

  • 刚决定不使用像ArrayList<T>这样更合适的数据结构?
  • 这肯定会更合适,但我想知道这是否甚至可以使用数组。
  • @SN。有可能的。只是不是为了严格定义“一次通过”。这两种方法是 1) 扫描、创建适当的数组大小或 2) 创建完整大小的数组、处理和缩小(或传递“使用的长度”或有另一个哨兵)以适应。这两种情况都不是理想的,尽管它可能 只是无关紧要(但我是第二个 Kirk Woll ;-)。这也是我避免使用 Java 的原因...
  • OT:@pst:您正在避免使用 java,因为您无法调整数组大小?
  • @stryba 我避免使用 Java,因为它缺少的一切使得处理简单的集合操作变得非常冗长和程序化;-) Java 中的数组(甚至下面的答案)很好地展示了这一点,我认为。例如,我更愿意这样做:theList.partition(x => x.length > 5) 或类似的。 (集合的易用性和我使用特定语言的愿望之间存在关联。)

标签: java arrays data-partitioning


【解决方案1】:

您想使用数组吗?或者它可能是收藏?如果是的话:

  String[] st = new String[] {"asas", "dsdsdsd", "sfdsfdsf", "dsfsdfdsfdsfs"};
  List<String> s1 = new ArrayList<String>();
  List<String> s2 = new ArrayList<String>();
  for (String s: st) {
      if (s.length>5)
          s1.add(s)
      else
          s2.add(s);
  }

【讨论】:

    猜你喜欢
    • 2019-05-03
    • 1970-01-01
    • 2021-09-20
    • 2023-01-17
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2015-11-10
    • 2012-01-01
    相关资源
    最近更新 更多