【问题标题】:java replace list with sublistjava用子列表替换列表
【发布时间】:2011-12-07 08:25:19
【问题描述】:

我有一个清单

ArrayList list = new ArrayList(Arrays.asList(1,2,3,4,5,3,4,2,4,5,3,10));

我还有另一个子列表

ArrayList sublist = new ArrayList(Arrays.asList(4,5,3));

我一直在寻找要替换的功能 列表内的子列表

与另一个子列表

ArrayList sublist = new ArrayList(Arrays.asList(100,100)));

所以在查找和替换之后,新列表应该变成:

list = (1,2,3,100,100,4,2,100,100,10);

我在 java 中找不到这个的任何 api。

【问题讨论】:

    标签: java list replace


    【解决方案1】:

    不确定是否存在用于执行此操作的任何 api,但您可以做的是利用 Java 中的 List 接口。

    如果你结合使用 包含所有(集合 c) 如果此列表包含指定集合的​​所有元素,则返回 true。

    removeAll(集合 c) 从此列表中删除指定集合中包含的所有元素(可选操作)。

    addAll(int index, Collection c) 将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。

    我认为您可以轻松完成所需的工作。

    看这里: http://download.oracle.com/javase/6/docs/api/java/util/List.html

    【讨论】:

      【解决方案2】:

      如果您将子列表创建为listtrue 子列表,例如使用List#subList(),那么对sublist 所做的(非结构性)更改将反映在list 中。

      List<Integer> list = Lists.newArrayList(1, 2, 3, 4, 5, 3, 4, 2, 4, 5, 3, 10);
      List<Integer> sublist = list.subList(3, 6);
      
      for (int i=0; i<sublist.size(); i++)
      {
          sublist.set(i, 100);
      }
      
      System.out.println(sublist);
      // prints 100, 100, 100
      System.out.println(list);
      // prints 1, 2, 3, 100, 100, 100, 4, 2, 4, 5, 3, 10
      

      演示:http://ideone.com/ljvd0


      Lists.newArrayList(...) 来自Google Guava

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-04
        • 1970-01-01
        • 2020-03-31
        • 1970-01-01
        • 2014-09-21
        • 2016-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多