ArrayList根据特定的元素去重
时间: 2023-06-23 10:44:59 浏览: 50
如果要根据特定的元素去重,可以使用 HashMap 来实现。具体实现方法如下:
```java
ArrayList<Student> list = new ArrayList<Student>();
// 添加元素到 list 中
HashMap<String, Student> map = new HashMap<String, Student>();
for (Student stu : list) {
map.put(stu.getName(), stu);
}
list.clear();
list.addAll(map.values());
```
以上代码是根据 Student 对象的 name 属性来去重的,如果要根据其他属性去重,可以将 getName() 方法替换为其他方法即可。
相关问题
java list 如何根据元素属性去重
可以使用Java 8的流操作和distinct()方法根据元素属性去重。以下是示例代码:
假设有一个Student类,其中包含id和name两个属性。
```
public class Student {
private int id;
private String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
```
现在有一个List<Student>,需要根据学生的id属性去重,可以这样做:
```
List<Student> students = new ArrayList<>();
// 添加多个学生
...
List<Student> distinctStudents = students.stream()
.distinct()
.collect(Collectors.toList());
```
这里的distinct()方法会根据学生对象的equals()和hashCode()方法进行去重,因此需要在Student类中重写这两个方法:
```
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
return id == student.id;
}
@Override
public int hashCode() {
return id;
}
```
这样就可以根据学生id属性去重了。如果需要根据其他属性去重,只需要在equals()和hashCode()方法中比较相应的属性即可。
arraylist 对象去重
要对 ArrayList 对象进行去重,你可以使用以下步骤:
1. 创建一个新的 ArrayList 对象来存储去重后的元素。
2. 遍历原始的 ArrayList 对象中的每个元素。
3. 检查新的 ArrayList 对象中是否已经包含当前元素,如果不包含则添加到新的 ArrayList 中。
4. 最后,新的 ArrayList 对象中就是去重后的结果。
下面是一个示例代码:
```java
import java.util.ArrayList;
import java.util.HashSet;
public class ArrayListDuplicateRemoval {
public static void main(String[] args) {
ArrayList<Integer> listWithDuplicates = new ArrayList<>();
listWithDuplicates.add(1);
listWithDuplicates.add(2);
listWithDuplicates.add(3);
listWithDuplicates.add(2);
listWithDuplicates.add(4);
listWithDuplicates.add(1);
ArrayList<Integer> listWithoutDuplicates = new ArrayList<>(new HashSet<>(listWithDuplicates));
System.out.println("Original ArrayList with duplicates: " + listWithDuplicates);
System.out.println("ArrayList after removing duplicates: " + listWithoutDuplicates);
}
}
```
这个示例中,我们使用了 HashSet 来实现去重操作。 HashSet 是一个不允许有重复元素的集合,通过将原始 ArrayList 转换为 HashSet,然后再转换回 ArrayList,就可以去除重复的元素。