Java List实体类去重
Posted 求知若渴 虚心若愚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java List实体类去重相关的知识,希望对你有一定的参考价值。
版权声明:本文为博主原创文章,未经博主允许不得转载。
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
新建一个实体类
- public class User {
- private String id;
- private String name;
- private String age;
- private String address;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((age == null) ? 0 : age.hashCode());
- result = prime * result + ((address == null) ? 0 : address.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- User other = (User) obj;
- if (id == null) {
- if (other.id != null) {
- return false;
- }
- } else if (!id.equals(other.id)) {
- return false;
- }
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- if (age == null) {
- if (other.age != null) {
- return false;
- }
- } else if (!age.equals(other.age)) {
- return false;
- }
- if (address == null) {
- if (other.address != null) {
- return false;
- }
- } else if (!address.equals(other.address)) {
- return false;
- }
- return true;
- }
- }
- private static List<User> removeListDuplicateObject(List<User> list) {
- System.out.println(Arrays.toString(list.toArray()));
- Set<User> set = new HashSet<User>();
- set.addAll(list);
- System.out.println(Arrays.toString(set.toArray()));
- List<User> listnewList = new ArrayList<User>(set);
- return listnewList;
- }
- @Override
- public int compareTo(DBBakPolicyDetail arg0) {
- if(this.getDbName() == null && arg0.getDbName() == null){
- return 0;
- }else if(this.getDbName() == null && arg0.getDbName() != null){
- return 1;
- }else if(this.getDbName() != null && arg0.getDbName() == null){
- return -1;
- }else {
- return this.getDbName().compareTo(arg0.getDbName());
- }
- }
- <span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.200000762939453px;">List特点:元素有放入顺序,元素可重复 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.200000762939453px;" /><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.200000762939453px;">Map特点:元素按键值对存储,无放入顺序 </span><br style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.200000762939453px;" /><p><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.200000762939453px;">Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的) </span></p><p><span style="font-family: Helvetica, Tahoma, Arial, sans-serif;"><span style="font-size: 14px; line-height: 25.200000762939453px;">新建一个实体类</span></span></p>
- public class User {
- private String id;
- private String name;
- private String age;
- private String address;
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getAge() {
- return age;
- }
- public void setAge(String age) {
- this.age = age;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((id == null) ? 0 : id.hashCode());
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + ((age == null) ? 0 : age.hashCode());
- result = prime * result + ((address == null) ? 0 : address.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- User other = (User) obj;
- if (id == null) {
- if (other.id != null) {
- return false;
- }
- } else if (!id.equals(other.id)) {
- return false;
- }
- if (name == null) {
- if (other.name != null) {
- return false;
- }
- } else if (!name.equals(other.name)) {
- return false;
- }
- if (age == null) {
- if (other.age != null) {
- return false;
- }
- } else if (!age.equals(other.age)) {
- return false;
- }
- if (address == null) {
- if (other.address != null) {
- return false;
- }
- } else if (!address.equals(other.address)) {
- return false;
- }
- return true;
- }
- }
之后调用即可
- private static List<User> removeListDuplicateObject(List<User> list) {
- System.out.println(Arrays.toString(list.toArray()));
- Set<User> set = new HashSet<User>();
- set.addAll(list);
- System.out.println(Arrays.toString(set.toArray()));
- List<User> listnewList = new ArrayList<User>(set);
- return listnewList;
- }
- @Override
- public int compareTo(DBBakPolicyDetail arg0) {
- if(this.getDbName() == null && arg0.getDbName() == null){
- return 0;
- }else if(this.getDbName() == null && arg0.getDbName() != null){
- return 1;
- }else if(this.getDbName() != null && arg0.getDbName() == null){
- return -1;
- }else {
- return this.getDbName().compareTo(arg0.getDbName());
- }
- }
List特点:元素有放入顺序,元素可重复
Map特点:元素按键值对存储,无放入顺序
Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)
新建一个实体类
以上是关于Java List实体类去重的主要内容,如果未能解决你的问题,请参考以下文章