java 对list对象进行去重示例
时间: 2023-07-18 07:21:03 浏览: 53
可以使用 Java 8 的 Stream API 来对 List 对象进行去重。假设有一个 List<String> 对象,现在要对其中的元素进行去重,可以按照如下方式实现:
```java
List<String> list = new ArrayList<>();
// 添加一些元素到 list 列表中
List<String> distinctList = list.stream().distinct().collect(Collectors.toList());
```
上述代码中,首先使用 `distinct` 方法去重,然后使用 `collect` 方法将去重后的结果转换为一个 List<String> 对象,即 distinctList。如果要对 List 中的自定义对象进行去重,可以使用对象的 `equals` 和 `hashCode` 方法来实现,例如:
```java
List<Person> persons = new ArrayList<>();
// 添加一些 Person 对象到 persons 列表中
List<Person> distinctPersons = persons.stream().distinct().collect(Collectors.toList());
```
在上述代码中,Person 类需要正确实现 `equals` 和 `hashCode` 方法,以便 Stream API 可以正确地对 Person 对象进行去重。
相关问题
java 对list对象里面某个属性去重示例
可以使用 Java 8 的 Stream API 来实现对 List 对象里面某个属性去重。假设有一个 Person 类,其中包含 name 和 age 两个属性,现在要对 List<Person> 中的 name 属性进行去重,可以按照如下方式实现:
```java
List<Person> persons = new ArrayList<>();
// 添加一些 Person 对象到 persons 列表中
List<String> distinctNames = persons.stream().map(Person::getName).distinct().collect(Collectors.toList());
```
上述代码中,首先使用 `map` 方法将 Person 对象转换为 name 属性,然后使用 `distinct` 方法去重,最后使用 `collect` 方法将去重后的结果转换为一个 List<String> 对象,即 distinctNames。
如果要对 List<Person> 中的其他属性去重,只需要将 `map` 方法中的 `Person::getName` 替换为对应的属性访问方法即可。
Java 对象list根据对象去重
可以使用 Java 8 中的流(Stream)和Lambda表达式来实现对对象list的去重。具体步骤如下:
1. 在对象类中重写 equals 和 hashCode 方法,以便可以比较对象的属性值是否相等。
2. 使用 stream.distinct() 方法,去掉重复的元素。
下面是示例代码:
```java
List<MyObject> list = new ArrayList<>();
// 添加对象到列表中
list.add(new MyObject("A", 1));
list.add(new MyObject("B", 2));
list.add(new MyObject("A", 1)); // 添加重复的对象
// 使用 stream 和 distinct 方法进行去重
List<MyObject> distinctList = list.stream().distinct().collect(Collectors.toList());
```
其中,MyObject 是自定义的对象类,包含两个属性:name 和 age。在 MyObject 类中重写 equals 和 hashCode 方法,如下所示:
```java
public class MyObject {
private String name;
private int age;
// 构造方法、getter 和 setter 方法省略
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
MyObject myObject = (MyObject) o;
return age == myObject.age &&
Objects.equals(name, myObject.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
```
在 equals 方法中,比较对象的 name 和 age 属性是否相等;在 hashCode 方法中,使用 Objects.hash() 方法生成哈希码。这样,在比较对象是否相等时,就可以使用对象的属性值进行比较了。