如何在java中比较两个通用列表的元素?
我有两个数据类型类的通用列表:RequiredList和PrimaryList如何在java中比较两个通用列表的元素?,java,Java,我有两个数据类型类的通用列表:RequiredList和PrimaryList public class Data{ private String dataCode; private String dataDesc; public String getDataCode(){} public void setDataCode(String dataCode){} public String getData
public class Data{
private String dataCode;
private String dataDesc;
public String getDataCode(){}
public void setDataCode(String dataCode){}
public String getDataDesc(){}
public void setDataDesc(String dataDesc){}
}
public static void main(String[] args) {
List<Data> primaryList = new ArrayList<Data>();
for (int i = 2; i < 5; i++) {
Data data = new Data();
data.setDataCode("code" + i);
data.setDataDesc("desc" + i);
primaryList.add(data);
}
List<Data> requiredList = new ArrayList<Data>();
for (int i = 0; i < 8; i++) {
Data data = new Data();
data.setDataCode("code" + i);
data.setDataDesc("desc" + i);
requiredList.add(data);
}
StringBuffer partyList = new StringBuffer();
for (int i = 0; i < requiredList.size(); i++) {
if (primaryList.size() > i
&& !requiredList.get(i).getDataCode().equals(primaryList.get(i).getDataCode())) {
partyList.append(requiredList.get(i).getDataDesc());
partyList.append(",");
}
if(primaryList.size() <= i)
{
partyList.append(requiredList.get(i).getDataDesc());
partyList.append(",");
}
}
System.out.println(partyList.toString());
}
公共类数据{
私有字符串数据代码;
私有字符串dataDesc;
公共字符串getDataCode(){}
public void setDataCode(字符串dataCode){}
公共字符串getDataDesc(){}
public void setDataDesc(字符串dataDesc){}
}
公共静态void main(字符串[]args){
List primaryList=new ArrayList();
对于(int i=2;i<5;i++){
数据=新数据();
data.setDataCode(“代码”+i);
data.setDataDesc(“desc”+i);
添加(数据);
}
List requiredList=新建ArrayList();
对于(int i=0;i<8;i++){
数据=新数据();
data.setDataCode(“代码”+i);
data.setDataDesc(“desc”+i);
所需列表。添加(数据);
}
StringBuffer partyList=新的StringBuffer();
对于(int i=0;ii
&&!requiredList.get(i).getDataCode().equals(primaryList.get(i).getDataCode())){
append(requiredList.get(i.getDataDesc());
partyList.append(“,”);
}
if(primaryList.size()首先需要为数据实现equals()
和hashcode()
然后
List newlist=newarraylist();
用于(数据:primaryList){
如果(!requiredList.contains(数据)){
添加(数据);
}
}
如果您同意修改primaryList,那么removeAll
就可以了
primaryList.removeAll(requiredList);
正如@Subin S所指出的,等于
和hashCode
需要为数据
重写
primaryList的那些元素不在requiredList中,它们
将添加到新列表中
查看removeAll()
或retainal()
方法在您的用例中很有用。为什么不在Data
类中重写equals()
方法并调用它:requiredList.get(i).equalr(arr2.get(i));确保其大小为sameI已覆盖此方法,但我没有得到实际结果。我想验证requiredList中的primaryList。primary List可能为0大小1大小或更大。我必须仅显示primaryList中不存在的大小。或者您可以在org.apache.commons.collections.CollectionUtilswhy中使用减法您是否使用list.contains()来判断对象是否存在于列表中?您可能希望使用Set而不是list来存储这些元素。
primaryList.removeAll(requiredList);