我想联合两个通用列表,并希望产生新的列表,我以简单的格式提供我的代码。Combinig两个通用列表
public class Example{
public static <E> List<E> union(List<? extends E> a,List<? extends E> b){
List<Object> es= new ArrayList<Object>();
for(E e:a){
es.add(e);
}
for(E e:b){
es.add(e);
}
return (List<E>) es;
}
public static void main(String[] args) {
List<Long> a=new ArrayList<Long>();
a.add(1L);
List<Integer> b=new ArrayList<Integer>();
b.add(2);
List<Number> list3=union(a, b);//Compilation Error due to mismatch of return type
List<String> a1=new ArrayList<String>();
a1.add("H");
List<String> a2=new ArrayList<String>();
a1.add("=E");
List<String> a3=union(a1, a2);//no compilation error
}
}
我的要求是我应该能够将两个整数一长串产生了一些名单,我应该能够将其他类型的结合为好。 这里的问题是关于返回类型,当我试图结合整数和长列表。我需要做些什么改变才能使我的代码正常工作。在联盟
public static <E> List<? extends E> union(List<? extends E> a, List<? extends E> b) {
HashSet<E> set = new HashSet<E>();
set.addAll(a);
set.addAll(b);
return new ArrayList<E>(set);
}
这需要保留两个表中出现的一个共同要素和罕见的元素太:
谢谢你的解决方案工作 – Krushna