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

时间:2018-11-21 07:03:51

标签: java groovy

例如,我有一个如下列表,

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

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

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

有可能吗?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在Java中,不可能将list1的类型设为return ( <MenuList value={value} onChange={this.handleChange}> {languages.map(({ value, text }) => ( <MenuItem key={value} value={value} > <Link to={value}> {text} </Link> </MenuItem> ))} </MenuList> )
list1的类型似乎是String,并且您要将另一个列表添加到list1中,这是不正确的。

但是可以将list1类型用作String

Object

但是不建议这样做。

答案 2 :(得分:0)

您可以按如下所示为特定索引添加值

    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;
}

答案 3 :(得分:0)

您的基本列表包含两种类型: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]

但是我重复一遍,您应该避免使用原始类型,因此不建议使用此解决方案