比较具有不同对象的2个列表java返回不匹配列表

比较具有不同对象的2个列表java返回不匹配列表,java,Java,如何比较2个列表 带列表的ArrayList ArrayList={a,b,c,d} 和 列表lst={a,b,c,d,e} 结果: 列表al={e} 我应该如何处理这个问题? 由于对象不同,比较器不工作,即使设置或其他操作也不工作 List<String> al = null; Map<String, List<String>> tagMap = new HashMap<String, List<String>>();

如何比较2个列表 带列表的ArrayList

ArrayList={a,b,c,d} 和 列表lst={a,b,c,d,e}

结果: 列表al={e}

我应该如何处理这个问题? 由于对象不同,比较器不工作,即使设置或其他操作也不工作

    List<String> al = null;
    Map<String, List<String>> tagMap = new HashMap<String, List<String>>();
    for (TkMGroup anotherTest : lst) {
        String id = anotherTest.getGrpCd();
        for (CsvGroup tag : list) {
            if (id.equals(tag.getGrpCd())) {
                if (tagMap.containsKey(id)) { // is this `id` already populated?
                    al = tagMap.get(id);
                } else { // No! Create a new List.
                    al = new ArrayList<String>();
                    tagMap.put(id, al);
                }
                // Add the tag to the List.
                al.add(tag.getGrpCd());
            } else {
                //              al.add(id);
            }
        }
    }
    for (int i = 0; i < al.size(); i++) {
        System.out.println(al.get(i));
    }
List al=null;
Map tagMap=newhashmap();
对于(TKM组另一个测试:lst){
String id=anotherTest.getGrpCd();
用于(CsvGroup标记:列表){
if(id.equals(tag.getGrpCd())){
if(tagMap.containsKey(id)){//是否已填充此'id'?
al=tagMap.get(id);
}否则{//No!创建一个新列表。
al=新的ArrayList();
tagMap.put(id,al);
}
//将标记添加到列表中。
al.add(tag.getGrpCd());
}否则{
//al.添加(id);
}
}
}
对于(int i=0;i
列表和ArrayList是集合框架的成员。列表是一系列元素的集合,其中每个元素都是一个对象,元素通过其位置(索引)进行访问。ArrayList创建一个动态对象数组,可以根据需要增加或减小大小。List和ArrayList的主要区别在于List是一个接口,ArrayList是一个类

列表和ArrayList之间的主要区别

  • List和ArrayList之间最重要的区别之一是List是一个接口,ArrayList是一个标准集合类
  • 列表接口扩展了集合框架,而ArrayList扩展了 AbstractList类,它实现Listinterfaces
  • 列表接口System.Collection.Generic的命名空间,而ArrayList的命名空间为System.Collection
  • List接口创建一组元素,这些元素按顺序存储,并通过其索引号进行标识或访问
  • 另一方面,ArrayList创建一个对象数组,该数组可以在需要时动态增长
范例-

        import java.util.*;  
        public class ComapreArraylistandList  
        {  
        public static void main(String args[])  
        {  
          
        ArrayList<String> al=new ArrayList<String>();   
        al.add("A");  
        al.add("B");  
        al.add("C");  
        al.add("D");  
        System.out.println(al);  
        
        List<String> sl=new ArrayList<String>();  
        sl.add("A");  
        sl.add("B");  
        sl.add("C");  
        sl.add("D");  
        System.out.println(sl);  
        
        //comparing both lists  
        boolean bval = al.equals(sl); //returns true because lists are equal  
        System.out.println(bval);  
        }  
        }  
import java.util.*;
公共类ComaPararraylistandList
{  
公共静态void main(字符串参数[])
{  
ArrayList al=新的ArrayList();
al.添加(“A”);
al.添加(“B”);
al.添加(“C”);
al.添加(“D”);
系统输出打印项次(al);
List sl=新的ArrayList();
sl.add(“A”);
sl.add(“B”);
sl.add(“C”);
sl.add(“D”);
系统输出打印LN(sl);
//比较两个列表
布尔bval=al.equals(sl);//返回true,因为列表是相等的
系统输出打印LN(bval);
}  
}  

我不明白标签图是用来做什么的。
我的解决方案将
al
(提供)填入
组的交叉点(作为
lst
提供)和
csv
(作为
列表提供)

import java.util.ArrayList;
导入java.util.List;
导入java.util.stream.collector;
类TKM组{
私有字符串id;
公共TkMGroup(字符串id){
this.id=id;
}
公共字符串getGrpCd(){
返回此.id;
}
}
类CSV组{
私有字符串id;
公共CsvGroup(字符串id){
this.id=id;
}
公共字符串getGrpCd(){
返回此.id;
}
}
公共班机{
公共静态void main(字符串[]args){
列表al=null;
列表组=新的ArrayList();
增加(新的TkMGroup(“一”));
增加(新的TkMGroup(“两”));
List csvs=new ArrayList();
CSV.add(新CSV集团(“一”);
新增CSV(新CSV集团(“三”);
//获取ID列表
List groupid=groups.stream().map(TkMGroup::getGrpCd).collect(Collectors.toList());
List csvIds=csvs.stream().map(CsvGroup::getGrpCd).collect(Collectors.toList());
//过滤交点
al=groupIds.stream().filter(csvIds::contains).collect(Collectors.toList());
//打印结果
对于(int i=0;i
编辑1:列出未列出现有组的每个CSV

import java.util.ArrayList;
导入java.util.List;
导入java.util.stream.collector;
类TKM组{
私有字符串id;
公共TkMGroup(字符串id){
this.id=id;
}
公共字符串getGrpCd(){
返回此.id;
}
}
类CSV组{
私有字符串id;
公共CsvGroup(字符串id){
this.id=id;
}
公共字符串getGrpCd(){
返回此.id;
}
@凌驾
公共字符串toString(){
返回“CsvGroup{”+
“id=”+id+“\”+
'}';
}
}
公共班机{
公共静态void main(字符串[]args){
列表al=null;
列表组=新的ArrayList();
增加(新的TkMGroup(“一”));
增加(新的TkMGroup(“两”));
List csvs=new ArrayList();
CSV.add(新CSV集团(“一”);
新增CSV(新CSV集团(“三”);
//获取组id的列表
List groupid=groups.stream().map(TkMGroup::getGrpCd).collect(Collectors.toList());
//滤除交点
al=csvs.stream().filter(csv->!groupIds.contains(csv.getGrpCd()).collect(Collectors.toList());
//您需要访问csv.getGrpCd()以检查该组是否尚未列出
//打印结果
对于(int i=0;i
没有比较实例将始终返回false,并且不会从中提取不匹配的元素