如何使用番石榴谓词获取数组列表中的重复元素
How to get duplicate elements in array list using guava predicates
我有一个包含一组元素的数组。我需要通过使用 java.
中预测的番石榴比较特定字段来找到该数组中的重复元素
例如:
我有一个包含一组员工详细信息的数组列表。我需要查找同名员工的详细信息。
可以使用番石榴Multimaps.index方法:
ImmutableListMultimap<String, Employee> byName =
Multimaps.index(employees, new Function<Employee, String>(){
@Override
public String apply(Employee e) {
return e.getName();
}
});
在Java 8:
Map<Department, List<Employee>> byName =
employees.stream()
.collect(Collectors.groupingBy(Employee::getName))
关于您的评论,您似乎想过滤列表以仅保留具有特定名称的员工。
所以使用番石榴:
List<Employee> employees = // ...
Collection<Employee> filtered =
Collections2.filter(employees, new Predicate<Employee>() {
@Override
public boolean apply(Employee e) {
return e.getName().equals("John Doe");
}
});
// if you want a List:
List<Employee> filteredList = new ArrayList<>(filtered);
使用 Java 8:
List<Employee> filteredList = employees.stream()
.filter(e -> e.getName().equals("John Doe"))
.collect(Collectors.toList());
我有一个包含一组元素的数组。我需要通过使用 java.
中预测的番石榴比较特定字段来找到该数组中的重复元素例如:
我有一个包含一组员工详细信息的数组列表。我需要查找同名员工的详细信息。
可以使用番石榴Multimaps.index方法:
ImmutableListMultimap<String, Employee> byName =
Multimaps.index(employees, new Function<Employee, String>(){
@Override
public String apply(Employee e) {
return e.getName();
}
});
在Java 8:
Map<Department, List<Employee>> byName =
employees.stream()
.collect(Collectors.groupingBy(Employee::getName))
关于您的评论,您似乎想过滤列表以仅保留具有特定名称的员工。
所以使用番石榴:
List<Employee> employees = // ...
Collection<Employee> filtered =
Collections2.filter(employees, new Predicate<Employee>() {
@Override
public boolean apply(Employee e) {
return e.getName().equals("John Doe");
}
});
// if you want a List:
List<Employee> filteredList = new ArrayList<>(filtered);
使用 Java 8:
List<Employee> filteredList = employees.stream()
.filter(e -> e.getName().equals("John Doe"))
.collect(Collectors.toList());