2
我有一組元素的數組。我需要通過比較特定的字段來使用java中的guava來查找該數組中的重複元素。如何使用番石榴謂詞獲得數組列表中的重複元素
例如:
我有一個arraylist與僱員的詳細信息集。我需要找到同名員工的詳細信息。
我有一組元素的數組。我需要通過比較特定的字段來使用java中的guava來查找該數組中的重複元素。如何使用番石榴謂詞獲得數組列表中的重複元素
例如:
我有一個arraylist與僱員的詳細信息集。我需要找到同名員工的詳細信息。
您可以使用番石榴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());
什麼廣告Java8拉姆達這裏表達? –
@hege_hegedus你明白了吧 –
這樣更好!我只想過'Multimaps.index(employees,e - > e.getName())':) –