Java 是同stream的filter过滤相同元素的数组
时间: 2024-03-09 21:48:03 浏览: 52
Java中也可以使用Stream来实现过滤相同元素的数组,代码如下:
```java
int[] arr = {1, 2, 2, 3, 3, 4, 5, 5};
int[] result = Arrays.stream(arr).distinct().toArray();
```
这段代码使用了Stream的distinct方法,可以去重arr数组中的元素,然后使用toArray方法将结果转换成数组。
相关问题
Java 是同stream的filter过滤相同元素的对象数组
Java中同样可以使用Stream来过滤相同元素的对象数组,需要使用distinct方法和自定义的equals和hashCode方法。示例如下:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Person)) {
return false;
}
Person other = (Person) obj;
return name.equals(other.name) && age == other.age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
上述代码中定义了一个Person类,并重写了equals和hashCode方法。接下来是过滤相同元素的对象数组的示例代码:
```java
Person[] persons = {
new Person("Tom", 18),
new Person("Tom", 18),
new Person("Jack", 20),
new Person("Lucy", 22),
new Person("Lucy", 22)
};
Person[] result = Arrays.stream(persons).distinct().toArray(Person[]::new);
```
这段代码使用了Stream的distinct方法,由于Person类已经重写了equals和hashCode方法,所以distinct方法可以正确地去重persons数组中的元素,最后使用toArray方法将结果转换成Person对象数组。
阅读全文