我在尝试从对象的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
}
}
}
为什么我没有得到“测试”&amp; “Oracle”作为我的预期结果(我比较两个列表的id == 15)。我错过了什么吗?
答案 0 :(得分:5)
Tag tag3 = new Tag();
tag3.setId(16);
tag1.setTag("OHNO CANNOE");//here is the issue
使用
tag3.setTag("OHNO CANNOE");
您要再次将tag1
对象的属性设置为"OHNO CANNOE"
,这将覆盖以前写入的值"test"
答案 1 :(得分:2)
我相信这是因为你通过执行tag3.setTag而不是tag3来重置tag1,在你将它推入列表之前定义它之后