List<YourClass> list1;List<YourClass2> list1.如果是这样的两个数组,判断YourClass和YourClass2对象中的sid字段,如果相等,就将sid提取出来,最终得结果是List<Long>
时间: 2024-09-27 07:10:07 浏览: 33
当你有两个不同类型的List,如`List<YourClass>`和`List<YourClass2>`,并且它们都有名为`sid`的字段,你可以创建一个函数来提取这两个列表中`sid`字段相等的对象。由于`List<Long>`仅包含数字,我们需要确保每个对象的`sid`字段能转换为`Long`类型。以下是步骤:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
public List<Long> extractSidsThatMatch(List<YourClass> list1, List<YourClass2> list2) {
List<Long> matchingSids = new ArrayList<>();
for (YourClass yourClass : list1) {
Long sid1 = Long.parseLong(yourClass.getSid()); // 假设getSid()返回的是字符串形式的sid
if (isSidPresentInList2(sid1, list2)) {
matchingSids.add(sid1);
}
}
for (YourClass2 yourClass2 : list2) {
Long sid2 = Long.parseLong(yourClass2.getSid());
if (!matchingSids.contains(sid2) && isSidPresentInList1(sid2, list1)) {
matchingSids.add(sid2);
}
}
return matchingSids;
}
private boolean isSidPresentInList(List<Long> list, Long sid) {
return list.stream().anyMatch(value -> value.equals(sid));
}
// 调用方法获取结果
List<Long> result = extractSidsThatMatch(list1, list2);
阅读全文