Java filter过滤相同元素的数组
时间: 2023-08-11 10:04:14 浏览: 53
可以使用Java中的Set集合来过滤数组中的相同元素。具体实现方法如下:
```java
int[] arr = {1, 2, 2, 3, 3, 4, 5, 5};
Set<Integer> set = new HashSet<>();
for(int i : arr) {
set.add(i);
}
int[] result = new int[set.size()];
int index = 0;
for(int i : set) {
result[index++] = i;
}
```
这段代码首先定义了一个数组arr,然后利用Set集合去重,最后将结果存储到新的数组result中。
相关问题
Java 是同stream的filter过滤相同元素的数组
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对象数组。