如何在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个索引
可能吗?
您的基本列表包含两种类型:String
和List<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 中将磁贴更改为另一个(或空白)?