比较具有不同对象的2个列表java返回不匹配列表
如何比较2个列表 带列表的ArrayList ArrayList={a,b,c,d} 和 列表lst={a,b,c,d,e} 结果: 列表al={e} 我应该如何处理这个问题? 由于对象不同,比较器不工作,即使设置或其他操作也不工作比较具有不同对象的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>>();
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,并且不会从中提取不匹配的元素