list中对象去重

本文介绍了Java中使用集合操作对String类型和自定义User对象进行处理,包括添加元素、清空列表、转换为HashSet并移除重复项,以及如何通过复写equals和hashCode方法实现对象的正确比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于String类型的list:

package com.yang.set;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Test {

	public static void main(String[] args) {
		List<String> userList = new ArrayList<String>();
		userList.add("y");
		userList.add("y");
		userList.add("b");
		for (int i = 0; i < userList.size(); i++) {
			System.out.println("list1---" + userList.get(i).toString());
		}
		System.out.println("-----------------------------");
		Set<String> hashSet = new HashSet<String>(userList);
		userList.clear();
		userList.addAll(hashSet);
		for (String user : userList) {
			System.out.println("list2---" + user.toString());
		}
		System.out.println("-----------------------------");
		for (String user : hashSet) {
			System.out.println("set1---" + user.toString());
		}
	}

}

对于对象:

对象假设是很简单的User,只包含两个字段内容:name,age。

首先要复写两个方法:equals,hashCode

package com.yang.set;

public class User {
	private String name;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public User(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "name=" + name + " age=" + age;
	}

	@Override
	public boolean equals(Object obj) {
		User s = (User) obj;
		return name.equals(s.name) && age == s.age;
	}

	@Override
	public int hashCode() {
		String in = age + name;
		return in.hashCode();
	}
}

Test测试类:

package com.yang.set;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class Test {

	public static void main(String[] args) {
		List<User> userList = new ArrayList<User>();
		userList.add(new User("y", 1));
		userList.add(new User("y", 1));
		userList.add(new User("yb", 2));
		for (int i = 0; i < userList.size(); i++) {
			System.out.println("list1---" + userList.get(i).toString());
		}
		System.out.println("-----------------------------------------");
		Set<User> hashSet = new HashSet<User>(userList);
		userList.clear();
		userList.addAll(hashSet);
		for (User user : userList) {
			System.out.println("list---" + user.toString());
		}
		System.out.println("-----------------------------------------");
		for (User user : hashSet) {
			System.out.println("set---" + user.toString());
		}
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值