如何在Java或Groovy中将列表值动态更改为另一个列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java或Groovy中将列表值动态更改为另一个列表相关的知识,希望对你有一定的参考价值。

例如,我有一个如下所示的列表,

list1 = ["a","b","c"] now i want to add value to the list[1] index and that index将是另一个列表,如,

list2 = [“w”,“x”,“y”]

输出将是[“a”,[“b”,“w”,“x”,“y”],“c”]我不想替换1个索引

可能吗?

答案

您的基本列表包含两种类型:StringList<String>

您可以在java中创建一个列表作为基本列表,但不是一个好主意,因为您正在混合类型。这是一种不好的做法。你应该avoid raw types

您可以使用辅助方法,如:

private static List mergeIntoList(List source, List listToAdd, int index) {
    List innerList = new ArrayList(listToAdd);
    innerList.add(0, source.get(index));

    List mergedList = new ArrayList(source);
    mergedList.set(index, innerList);

    return mergedList;
}

例如:

 List source = Arrays.asList("a", "b", "c");
 List listToAdd = Arrays.asList("w", "x", "y");

 System.out.println(mergeIntoList(source, listToAdd, 1));

输出:[a,[b,w,x,y],c]

但我再说一遍,你应该避免原始类型,所以不推荐这个解决方案

另一答案

这是可能的,但不是非常安全(=不要这样做)。您可以使用List然后添加您的值,可以是任何类型的Object(Integer String ...或其他List)。检索对象时,您需要检查它们与instanceof的类型,然后进行转换。

另一答案

在java中,不可能将list1的类型作为String。 list1的类型似乎是String,您要将另一个列表添加到list1中,这是不正确的。

但是有可能将类型list1作为Object

List<Object> list1=new ArrayList<>();
list1.add("a");
list1.add("b");
list1.add("c");

List<Object> innerlist=new ArrayList<>();  //Inner List

list1.add(innerlist);

但是不建议这样做。

另一答案

您可以将值添加到特定索引,如下所示

    List list = new ArrayList();
    List l1 = new ArrayList();
    l1.add("3");
    l1.add("4");
    list.add("1");
    list.add("5");
    list.add(1, l1);

请确保列表大小中的索引,否则将获得IndexOutOfBoundsException

请尝试以下逻辑

public List replaceIndex(List original, List replace, int index) {
    Object object = original.remove(index);
    replace.add(0, object);
    original.add(index, replace);
    return original;
}

以上是关于如何在Java或Groovy中将列表值动态更改为另一个列表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SpriteKit 中将磁贴更改为另一个(或空白)?

如何在片段着色器中将分辨率从静态更改为动态

如何在颤动中将格式从列表视图更改为网格视图?

如何在由科学记数法组成的列表中将字符串更改为 int

如何在 C++ 中将值 char 数组的类型更改为 int? [复制]

如何使用 Java 调用 Groovy 或 Scala UDF 来更新 Oracle?