我对虚拟图的启发式方法有一个问题,在该方法中,我必须对两个整数列表中的数字元素进行计数:我必须在列表中放入第一个数字和不包含在其中的数字第二个列表。
我尝试了两个addAll和一个removeAll(secondList),它可以工作,但是当列表具有 duplicates 时,它不起作用,因为也删除了重复元素:
//Test lists
List<Integer> ls1 = Arrays.asList(1,1,2,3);
List<Integer> ls3 = Arrays.asList(1,3);
List<Integer> s = new ArrayList<>();
s.addAll(ls1);
System.out.println("Add " + ls1);
s.addAll(ls3);
System.out.println("Add " + ls3);
System.out.println("New list" + s);
s.removeAll(ls3);
System.out.println("Expected value (1,2)");
System.out.println("Result List " + s);
新列表为[1、1、2、3、1、3],预期输出为[1,2],但实际输出仅为2。
答案 0 :(得分:0)
将ls2
中ls1
中存在的元素删除为:
List<Integer> ls1 = Arrays.asList(1, 1, 2, 3);
List<Integer> ls2 = Arrays.asList(1, 3);
List<Integer> s = new ArrayList<>(ls1);
ls2.forEach(s::remove);
答案 1 :(得分:0)
你好,@吉列尔莫·加里多,
您似乎想从列表1中减去列表2。
如果您在项目中使用apache-commons
,则只需执行以下操作即可:
import import org.apache.commons.collections.ListUtils;
List<Integer> s = ListUtils.subtract(ls1, ls2);
或者,如果您想使用简单的Java进行操作,请查看@Naman的答案。