list集合中存的是对象,对象怎么去重
时间: 2024-01-27 11:48:39 浏览: 23
?您可以使用Java中的HashSet来去重。HashSet本质上是一个Set集合,只能存储不重复元素,如果添加重复元素,则不会被添加。当我们要去重的时候,可以将list中的元素一个一个添加到HashSet中,由于HashSet不存储重复元素,所以最终HashSet中存储的元素就是去重过后的结果。具体代码实现可以参考下面的示例:
```
List<Object> list = new ArrayList<>(Arrays.asList(obj1, obj2, obj3, obj1, obj2));
Set<Object> set = new HashSet<>(list);
List<Object> result = new ArrayList<>(set);
```
运行以上代码后,result中存储的就是去重过后的元素列表。
相关问题
list集合中是对象怎么去重
如果List集合中是对象,我们需要重写对象的equals()方法和hashCode()方法来实现去重。equals()方法用来判断两个对象是否相同,而hashCode()方法用来计算对象的哈希码,以便在HashSet或HashMap等集合中进行快速查找和去重。
例如,假设我们有一个Person类,它有两个属性name和age,我们要对Person对象进行去重,可以在Person类中重写equals()和hashCode()方法,示例代码如下:
```java
public class Person {
private String name;
private int age;
// 构造方法和其他方法省略
@Override
public boolean equals(Object obj) {
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return Objects.equals(name, person.name) && age == person.age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
```
上述代码中,equals()方法判断两个Person对象是否相同,如果name和age都相同,则认为两个对象相同;hashCode()方法根据name和age计算哈希码,确保相同的对象具有相同的哈希码。
然后我们可以使用HashSet来进行去重操作,示例代码如下:
```java
List<Person> personList = new ArrayList<>();
// 添加Person对象到List
...
Set<Person> personSet = new HashSet<>(personList);
// 去重后的结果保存在personSet中
```
上述代码中,将List转换成Set时,HashSet会自动调用Person类的equals()和hashCode()方法来进行去重。因为HashSet不保证元素的顺序,如果需要保留原始顺序,可以使用LinkedHashSet。
java中list集合对象去重
以下是两种Java中List集合对象去重的方法:
1. 使用双重循环遍历并删除重复元素:
```java
public static List removeDuplicate(List list) {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
return list;
}
```
2. 使用HashSet去重并保持顺序:
```java
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println("remove duplicate " + list);
}
```