sTg*_*sTg 1 java arraylist dirtyread java-8
如何ArrayList在Java中执行脏检查?
我有一个对象
Animal
{
String animalName;
String animalType;
String animalPlace
}
Run Code Online (Sandbox Code Playgroud)
我有两个清单:
List<Animal> animalList1 = new ArrayList<Animal>();
List<Animal> animalList2 = new ArrayList<Animal>();
Run Code Online (Sandbox Code Playgroud)
在第一个列表中,我有值:
[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Zimbabwe]
Run Code Online (Sandbox Code Playgroud)
在第二个列表中,我有以下值:
[0][lion,Carnivorous,Africa]
[1][tiger,Carnivorous,Zambia]
[2][Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)
在第二个清单中,animalPlace索引2的元素已从津巴布韦变为挪威.如何比较两个列表值和已更改的值将该对象放在单独的列表中?
List<Animal> animalList3 = new ArrayList<Animal>();
[0] [Goat,Herbivorous,Norway]
Run Code Online (Sandbox Code Playgroud)
通过使用for循环比较列表,我知道传统的方法:
for (int i = 0; i < list1.size(); i++)
{
for (int j = i+1; j < list2.size(); j++)
{
// compare list1 and list2 values
}
}
Run Code Online (Sandbox Code Playgroud)
有更快更好的方式吗?
该列表#的removeAll()方法是你的朋友.
实现equals()和hashCode()为动物,然后:
List<Animal> animalList3 = new ArrayList<Animal>(animalList2);
animalList3.removeAll(animalList1);
Run Code Online (Sandbox Code Playgroud)