java8写一个当两个类型不同的list根据复数个keymatch不到数据时报异常log的共通方法
时间: 2024-05-09 18:18:47 浏览: 176
java中double类型运算结果异常的解决方法
可以使用泛型和函数式编程来实现这个方法:
```
import java.util.List;
import java.util.function.Function;
public class ListUtils {
public static <T, U> void checkKeyMatches(List<T> list1, List<U> list2, Function<T, ?> keyExtractor1, Function<U, ?> keyExtractor2) {
for (T t : list1) {
Object key1 = keyExtractor1.apply(t);
boolean foundMatch = false;
for (U u : list2) {
Object key2 = keyExtractor2.apply(u);
if (key1.equals(key2)) {
foundMatch = true;
break;
}
}
if (!foundMatch) {
System.err.println("No match found for key: " + key1);
}
}
}
}
```
这个方法接受两个列表和两个函数,分别用于从每个列表中的元素中提取关键字。然后它遍历第一个列表的每个元素,查找第二个列表中是否有与之匹配的元素。如果找不到匹配的元素,就输出错误信息。
例如,如果要检查两个列表中的对象是否具有相同的 ID 属性,可以这样调用方法:
```
List<Person> people = Arrays.asList(
new Person("Alice", 1),
new Person("Bob", 2),
new Person("Charlie", 3)
);
List<Order> orders = Arrays.asList(
new Order(100, "Alice"),
new Order(101, "Bob")
);
ListUtils.checkKeyMatches(people, orders, Person::getId, Order::getCustomerId);
```
这个例子将输出 "No match found for key: 3",因为 Charlie 没有订单。
阅读全文