【问题标题】:Java how to compare 2 ArrayList of different objectsJava如何比较2个不同对象的ArrayList
【发布时间】:2014-04-08 14:18:11
【问题描述】:

我在尝试从 objects 的 2 个 ArrayList 中获取 String 中“标签”的 araylist 时遇到问题。我尝试了以下方法,但看起来我的理想输出不是我所期望的。

代码如下:

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
    }

}
}

为什么我没有得到“Test”和“Oracle”作为我的预期结果(我正在比较两个列表的 id ==15)。我错过了什么吗?

【问题讨论】:

    标签: java arraylist compare


    【解决方案1】:
    Tag tag3 = new Tag();
            tag3.setId(16);
            tag1.setTag("OHNO CANNOE");//here is the issue
    

    使用

    tag3.setTag("OHNO CANNOE");
    

    您将tag1 对象的属性再次设置为"OHNO CANNOE",这将覆盖之前写入的值"test"

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        相关资源
        最近更新 更多