我想用重复元素减去列表。例如:
List<String> list1 = ['APPROVE', 'APPROVE', 'CARVEOUT', 'DENY', 'CARVEOUT'];
List<String> list2 = ['APPROVE', 'CARVEOUT', 'DENY', 'APPROVE']
// i tried
List<String> final = list1-list2;
我想要的答案是['CARVEOUT'] 这个方法消除了commom元素,因此我得到一个Empty列表。有没有办法达到我想要的目的?
答案 0 :(得分:3)
您可以使用list1.removeAll(list2)从list2
中删除所有list1
元素。但是,请注意removeAll()
方法会删除equals
中的所有匹配(包含list1
)元素。
因此,在您的情况下,如果您想根据list2
的出现次数删除元素,可以使用remove()
,如下所示:
list2.stream().forEach(element -> list1.remove(element));
答案 1 :(得分:1)
您可以使用 .remove(Object o) 方法删除第一次出现的对象。
item_id
提供输出:
List<String> list1 =new ArrayList(Arrays.asList(new String[]{"APPROVE", "APPROVE", "CARVEOUT", "DENY", "CARVEOUT"}));
List<String> list2 =new ArrayList(Arrays.asList(new String[]{"APPROVE", "APPROVE", "CARVEOUT", "DENY"}));
for(String str:list2)
list1.remove(new String(str));
System.out.println(list1);
答案 2 :(得分:0)
Java不支持重载运算符,因此您应该使用。
<table width="100%">
<tbody>
<tr>
<td>id</td>
<td>book</td>
<td>colour</td>
<td>name</td>
<td>public</td>
</tr>
<tr>
<td>1</td>
<td>Book1</td>
<td>Red</td>
<td>This is a book one</td>
<td>#number1111111</td>
</tr>
<tr>
<td>2</td>
<td>Book2</td>
<td>White</td>
<td>This is a book two</td>
<td>#number2222222</td>
</tr>
<tr>
<td>3</td>
<td>Book3</td>
<td>Blue</td>
<td>This is a book three</td>
<td>#number33333333</td>
</tr>
<tr>
<td>4</td>
<td>Book4</td>
<td>Yellow</td>
<td>This is a book four</td>
<td>#number44444444</td>
</tr>
</tbody>
</table>