以下のコードを試してみてください。一般的な値のリストが表示されます
package rais;
import java.util.ArrayList;
import java.util.List;
public class ArrayClient {
public static void main(String[] args) {
List<ObjectType1> list1 = new ArrayList<ObjectType1>();
ObjectType1 type1Obj1 = new ObjectType1(10001l, "XXX", "YYYY");
list1.add(type1Obj1);
ObjectType1 type1Obj2 = new ObjectType1(10002l, "XXX", "YYYY");
list1.add(type1Obj2);
ObjectType1 type1Obj3 = new ObjectType1(10003l, "XXX", "YYYY");
list1.add(type1Obj3);
ObjectType1 type1Obj4 = new ObjectType1(10004l, "XXX", "YYYY");
list1.add(type1Obj4);
ObjectType1 type1Obj5 = new ObjectType1(10005l, "XXX", "YYYY");
list1.add(type1Obj5);
List<ObjectType2> list2 = new ArrayList<ObjectType2>();
ObjectType2 type2Obj1 = new ObjectType2(10001l, "XXX", 2000l);
list2.add(type2Obj1);
ObjectType2 type2Obj2 = new ObjectType2(10002l, "XXX", 2001l);
list2.add(type2Obj2);
ObjectType2 type2Obj3 = new ObjectType2(50002l, "XXX", 2002l);
list2.add(type2Obj3);
ObjectType2 type2Obj4 = new ObjectType2(50003l, "XXX", 2003l);
list2.add(type2Obj4);
List<ObjectType1> list3 = retainAll(list1, list2);
for (ObjectType1 objectType : list3) {
System.out.println(objectType);
}
}
public static List<ObjectType1> retainAll(List<ObjectType1> firstList, List<ObjectType2> secondList) {
List<ObjectType1> list3 = new ArrayList<ObjectType1>();
for (ObjectType1 first : firstList) {
for (ObjectType2 second : secondList) {
if (first.getField1().equals(second.getField1())) {
list3.add(first);
break;
}
}
}
return list3;
}
}
上記のプログラムでは、2つのオブジェクトの下にあります
ObjectType1 type1Obj1 = new ObjectType1(10001l, "XXX", "YYYY");
list1.add(type1Obj1);
ObjectType1 type1Obj2 = new ObjectType1(10002l, "XXX", "YYYY");
list1.add(type1Obj2);
両方のクラスに共通のfield1があるlist3 には、type1の2つの要素のみが含まれます。