Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何比较不同对象的2个ArrayList_Java_Arraylist_Compare - Fatal编程技术网

Java如何比较不同对象的2个ArrayList

Java如何比较不同对象的2个ArrayList,java,arraylist,compare,Java,Arraylist,Compare,我在试图从2个对象的ArrayList中获取字符串中“tags”的ArrayList时遇到问题。我尝试了以下方法,但看起来我的理想输出不是我所期望的 代码如下: public class TestList { public static void main(String []args) { Tag tag1 = new Tag(); tag1.setId(15); tag1.setTag("Test"); Tag tag2

我在试图从2个对象的ArrayList中获取字符串中“tags”的ArrayList时遇到问题。我尝试了以下方法,但看起来我的理想输出不是我所期望的

代码如下:

public class TestList {
    public static void main(String []args) {
        Tag tag1 = new Tag();
        tag1.setId(15);
        tag1.setTag("Test");

        Tag tag2 = new Tag();
        tag2.setId(15);
        tag2.setTag("Oracle");

        Tag tag3 = new Tag();
        tag3.setId(16);
        tag1.setTag("OHNO CANNOE");

        List<Tag> tagList = new ArrayList<Tag>();

        tagList.add(tag1);
        tagList.add(tag2);
        tagList.add(tag3);

        System.out.println(tagList.size());

        AnotherTest test1 = new AnotherTest();
        test1.setId(15);
        test1.setTestcol("Another test col");

        AnotherTest test2 = new AnotherTest();
        test2.setId(15);
        test2.setTestcol("HAHAHA");

        List<AnotherTest> anotherTests = new ArrayList<AnotherTest>();
        anotherTests.add(test1);
        anotherTests.add(test2);

        System.out.println(anotherTests.size());
        List<String> getTaglist = new ArrayList<String>();
        for(AnotherTest anotherTest : anotherTests) {
            for(Tag tag: tagList) {
                if(tag.getId()==anotherTest.getId()) {
                    //getTaglist = new ArrayList<String>();
                    getTaglist.add(tag.getTag());
                }
            }
        }

    for (String str: getTaglist) {
        System.out.println(str);
        //this gets:
       //OHNO CANNOE
       //Oracle
       //OHNO CANNOE
       //Oracle
    }

}
}
公共类测试列表{
公共静态void main(字符串[]args){
Tag tag1=新标签();
tag1.setId(15);
tag1.设置标签(“测试”);
Tag tag2=新标签();
tag2.setId(15);
tag2.setTag(“甲骨文”);
Tag tag3=新标签();
tag3.setId(16);
tag1.setTag(“OHNO CANNOE”);
List tagList=new ArrayList();
标记列表。添加(标记1);
tagList.add(tag2);
tagList.add(tag3);
System.out.println(tagList.size());
AnotherTest test1=新的AnotherTest();
test1.setId(15);
测试1.设置测试列(“另一个测试列”);
AnotherTest test2=新的AnotherTest();
test2.setId(15);
测试2.setTestcol(“哈哈哈”);
列出其他测试=新建ArrayList();
添加(test1);
添加(test2);
System.out.println(另一个tests.size());
List getTaglist=new ArrayList();
对于(其他测试:其他测试){
用于(标记:标记列表){
if(tag.getId()==anotherTest.getId()){
//getTaglist=newarraylist();
add(tag.getTag());
}
}
}
for(字符串str:getTaglist){
系统输出打印项次(str);
//这将得到:
//大野美人蕉
//神谕
//大野美人蕉
//神谕
}
}
}
为什么我没有得到“Test”和“Oracle”作为我的预期结果(我比较两个列表的id==15)。我遗漏了什么吗

Tag tag3 = new Tag();
        tag3.setId(16);
        tag1.setTag("OHNO CANNOE");//here is the issue
使用

您正在将
tag1
对象的属性再次设置为
“OHNO CANNOE”
,这将覆盖先前写入的值
“test”

使用


您正在将
tag1
对象的属性再次设置为
“OHNO CANNOE”
,这将覆盖以前写入的值
“test”

,我相信这是因为您通过执行tag1.setTag而不是通过执行tag3.setTag来重置tag1,在你定义它之后,在你把它推到列表中之前,我相信这是因为你在定义它之后,在你把它推到列表中之前,通过执行tag1.setTag来重置tag1,而不是通过执行tag3.setTag来重置tag3

tag3.setTag("OHNO CANNOE");