我从两个不同的数据库中获取数据并将它们存储在java.util.List
中Elements of database:1
column 1 column 2
**Investment Number** Investment Name
123 abcwe
124 agsdf
454 lkjcv
784 ojncv
478 hfdgh
852 qweyu
745 mmkty
201 pbckl
560 jklfg
741 nbvbn
将它们存储在list1
中数据库元素:2
column 1 column 2
Investment Number Property Number
123 548
980 743
454 200
350 357
478 698
852 223
745 795
784 213
341 022
741 900
将它们存储在list2中
如果list2中可用的list1的投资数量需要保留并丢弃其他人,则需要根据投资数字进行比较。谢谢,
答案 0 :(得分:3)
如果您有两个列表,则可以执行以下操作:
List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 5, 6, 7));
List<Integer> list2 = new ArrayList<>(Arrays.asList(5, 6, 7, 8, 9));
list1.retainAll(list2);
System.out.println("list1 = " + list1);
结果将是:
list1 = [5, 6, 7]
答案 1 :(得分:2)
为您的两个类创建一个包装类,并使用List.retainAll()。 这是一些代码
你已经拥有与Blam和Hoot相同的类; 它们包含在内以便完整
public class Blam
{
private String investmentNumber;
private String investmentName;
... getters and setters
}
public class Hoot
{
private String investmentNumber;
private String propertyNumber;
... getters and setters
}
public class Wrapper
{
private Blam blam;
private Hoot hoot;
public Wrapper(final Blam blam)
{
this.blam = blam;
}
public Wrapper(final Hoot hoot)
{
this.hoot = hoot;
}
public boolean equals(Object oThat)
{
if (this == oThat)
{
return true;
}
if (oThat instanceof Wrapper)
{
Wrapper wThat = (Wrapper)oThat;
String myInvestmentNumber;
String yourInvestmentNumber;
if (blam != null)
{
myInvestmentNumber = blam.getInvestmentNumber();
}
else
{
myInvestmentNumber = hoot.getInvestmentNumber();
}
if (wThat.blam != null)
{
yourInvestmentNumber = wThat.blam.getInvestmentNumber();
}
else
{
yourInvestmentNumber = wThat.hoot.getInvestmentNumber();
}
return StringUtils.equals(myInvestmentNumber, yourInvestmentNumber);
}
return false;
}
public int hashCode()
{
... implement this using blam and hoot as in equals() above.
}
... getters for Hoot and Blam values as needed.
}
List<Wrapper> listOne = new ArrayList<Wrapper>();
List<Wrapper> listTwo = new ArrayList<Wrapper>();
... populate listOne with wrapped Blam values.
... populate listTwo with wrapped Hoot values.
listTwo.retainAll(listOne);
执行retainAll后,Hoot列表包含数据库2中数据库1中有相应条目的所有值。
注意:StringUtils是一个apache commons lang类,它执行null safe equals(和其他东西)。
答案 2 :(得分:0)
假设您有两个pojos对应于两个不同数据库的两个不同表
Pojo1 -------实体类对应第一个数据库的第一个表
Pojo2 -------实体类与第二个数据库的第二个表相对应
List<Pojo1> listOne = new ArrayList<Pojo1>();
List<Pojo2> listTwo = new ArrayList<Pojo2>();
listTwo.retainAll(listOne);
请注意,在这两个pojos中你必须覆盖Object类的hashcode()和equals()方法,因为在retainAll中,你要比较两个pojos的对象