Java stream 对元素为对象的list根据uuid去重 
时间: 2023-04-10 21:03:17 浏览: 83
可以使用Java 8中的stream和Collectors工具类来实现对元素为对象的list根据uuid去重的操作,具体代码如下:
```
List<Object> list = new ArrayList<>();
// 添加元素到list中
List<Object> distinctList = list.stream()
.filter(distinctByKey(obj -> obj.getUuid()))
.collect(Collectors.toList());
// 去重方法
public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
```
这段代码使用了Java 8中的stream方法,通过filter方法和distinctByKey方法实现对元素为对象的list根据uuid去重的操作。
相关问题
java中使用stream往集合对象添加多个属性值
可以使用Java 8中的Stream API和lambda表达式来添加集合对象的多个属性值。假设我们有一个Person类,有name、age和gender三个属性,我们可以使用以下代码将多个Person对象添加到List集合中:
```
List<Person> people = new ArrayList<>();
people.add(new Person("Alice", 25, "female"));
people.add(new Person("Bob", 30, "male"));
people.add(new Person("Charlie", 20, "male"));
```
如果我们想要添加每个人的ID属性,可以使用Stream API的map方法,将每个Person对象映射为一个新的Person对象,并在其中添加ID属性。例如,我们可以使用以下代码:
```
List<Person> peopleWithIds = people.stream()
.map(person -> {
person.setId(UUID.randomUUID().toString());
return person;
})
.collect(Collectors.toList());
```
在上面的代码中,我们使用UUID生成一个唯一的ID字符串,并将其设置为每个Person对象的ID属性。然后,我们使用collect方法将Stream转换为List集合,以便我们可以访问所有添加了ID属性的Person对象。
类似地,我们可以使用Stream API和lambda表达式来添加其他属性值,例如日期、地址等等。只需在map方法中创建一个新的Person对象,并设置所需的属性即可。
java生成uuid_Java UUID
生成 UUID(通用唯一标识符)是 Java 中常见的任务之一。可以使用 java.util.UUID 类来生成 UUID。以下是一个简单的示例:
```java
import java.util.UUID;
public class UUIDGenerator {
public static void main(String[] args) {
UUID uuid = UUID.randomUUID();
System.out.println("UUID: " + uuid.toString());
}
}
```
此代码将生成一个 UUID 并将其打印到控制台。UUID 是一个 128 位的数值,通常呈现为 36 个字符的字符串,例如:8f68ee5d-7a97-4b5d-bb8d-1d4f7d4a3b97。
相关推荐















