Java的如何比较2的ArrayList对象的不同 [英] Java how to compare 2 ArrayList of different objects

查看:143
本文介绍了Java的如何比较2的ArrayList对象的不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个问题想从2的ArrayList 对象 String中获得标签的araylist。我曾尝试以下,但看起来像我的理想输出是不是我期望的。

下面是code:

 公共类TestList {
    公共静态无效的主要(字串[] args){
        标签标记1 =新标签();
        tag1.setId(15);
        tag1.setTag(测试);        标签标签2 =新标签();
        tag2.setId(15);
        tag2.setTag(甲骨文);        标签TAG3 =新标签();
        tag3.setId(16);
        tag1.setTag(OHNO Cannoe素材);        清单<标记和GT;标记列表=新的ArrayList<吊牌及GT;();        tagList.add(TAG1);
        tagList.add(TAG2);
        tagList.add(TAG3);        的System.out.println(tagList.size());        AnotherTest TEST1 =新AnotherTest();
        test1.setId(15);
        test1.setTestcol(另一个测试COL);        AnotherTest测试2 =新AnotherTest();
        test2.setId(15);
        test2.setTestcol(HAHAHA);        清单< AnotherTest> anotherTests =新的ArrayList< AnotherTest>();
        anotherTests.add(TEST1);
        anotherTests.add(测试2);        的System.out.println(anotherTests.size());
        清单<串GT; getTaglist =新的ArrayList<串GT;();
        对于(AnotherTest anotherTest:anotherTests){
            对于(标记标签:标记列表){
                如果(tag.getId()== anotherTest.getId()){
                    // getTaglist =新的ArrayList<串GT;();
                    getTaglist.add(tag.getTag());
                }
            }
        }    对于(字符串str:getTaglist){
        的System.out.println(STR);
        //这得到:
       //大野Cannoe素材
       //甲骨文
       //大野Cannoe素材
       //甲骨文
    }}
}

为什么我没有得到测试&放大器; 甲骨文作为我期望的结果(我用的ID == 15比较这两个列表)。我缺少什么?


解决方案

 标签TAG3 =新标签();
        tag3.setId(16);
        tag1.setTag(大野Cannoe素材); //这里是问题

使用

  tag3.setTag(大野Cannoe素材);

你设置标记1 对象的属性再次大野Cannoe素材将在pviously写$ P $写入值测试

I have a problem trying to get an araylist of "tags" in String from 2 ArrayList of objects. I have tried the following but looks like my ideal output is not what I have expected.

Here is the code:

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
    }

}
}

Why am I not getting "Test" & "Oracle" as my expected result (I am comparing with id ==15 for both lists). Am I missing anything?

解决方案

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

use

tag3.setTag("OHNO CANNOE");

you are setting tag1 object's property again to "OHNO CANNOE" which will over write the previously written value "test"

这篇关于Java的如何比较2的ArrayList对象的不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆