Java List实体类去重

版权声明:本文为博主原创文章,未经博主允许不得转载。

List特点:元素有放入顺序,元素可重复

Map特点:元素按键值对存储,无放入顺序

Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)

新建一个实体类

[java] view plain copy

  1. public class User {
  2. private String id;
  3. private String name;
  4. private String age;
  5. private String address;
  6. public String getId() {
  7. return id;
  8. }
  9. public void setId(String id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public String getAge() {
  19. return age;
  20. }
  21. public void setAge(String age) {
  22. this.age = age;
  23. }
  24. public String getAddress() {
  25. return address;
  26. }
  27. public void setAddress(String address) {
  28. this.address = address;
  29. }
  30. @Override
  31. public int hashCode() {
  32. final int prime = 31;
  33. int result = 1;
  34. result = prime * result + ((id == null) ? 0 : id.hashCode());
  35. result = prime * result + ((name == null) ? 0 : name.hashCode());
  36. result = prime * result + ((age == null) ? 0 : age.hashCode());
  37. result = prime * result + ((address == null) ? 0 : address.hashCode());
  38. return result;
  39. }
  40. @Override
  41. public boolean equals(Object obj) {
  42. if (this == obj) {
  43. return true;
  44. }
  45. if (obj == null) {
  46. return false;
  47. }
  48. if (getClass() != obj.getClass()) {
  49. return false;
  50. }
  51. User other = (User) obj;
  52. if (id == null) {
  53. if (other.id != null) {
  54. return false;
  55. }
  56. } else if (!id.equals(other.id)) {
  57. return false;
  58. }
  59. if (name == null) {
  60. if (other.name != null) {
  61. return false;
  62. }
  63. } else if (!name.equals(other.name)) {
  64. return false;
  65. }
  66. if (age == null) {
  67. if (other.age != null) {
  68. return false;
  69. }
  70. } else if (!age.equals(other.age)) {
  71. return false;
  72. }
  73. if (address == null) {
  74. if (other.address != null) {
  75. return false;
  76. }
  77. } else if (!address.equals(other.address)) {
  78. return false;
  79. }
  80. return true;
  81. }
  82. }

调用即可

[java] view plain copy

  1. private static List<User> removeListDuplicateObject(List<User> list) {
  2. System.out.println(Arrays.toString(list.toArray()));
  3. Set<User> set = new HashSet<User>();
  4. set.addAll(list);
  5. System.out.println(Arrays.toString(set.toArray()));
  6. List<User> listnewList = new ArrayList<User>(set);
  7. return listnewList;
  8. }

附上一个按某个字段排序功能

[java] view plain copy

  1. @Override
  2. public int compareTo(DBBakPolicyDetail arg0) {
  3. if(this.getDbName() == null && arg0.getDbName() == null){
  4. return 0;
  5. }else if(this.getDbName() == null && arg0.getDbName() != null){
  6. return 1;
  7. }else if(this.getDbName() != null && arg0.getDbName() == null){
  8. return -1;
  9. }else {
  10. return this.getDbName().compareTo(arg0.getDbName());
  11. }
  12. }

[java] view plain copy

  1. <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>

[java] view plain copy

  1. public class User {
  2. private String id;
  3. private String name;
  4. private String age;
  5. private String address;
  6. public String getId() {
  7. return id;
  8. }
  9. public void setId(String id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public String getAge() {
  19. return age;
  20. }
  21. public void setAge(String age) {
  22. this.age = age;
  23. }
  24. public String getAddress() {
  25. return address;
  26. }
  27. public void setAddress(String address) {
  28. this.address = address;
  29. }
  30. @Override
  31. public int hashCode() {
  32. final int prime = 31;
  33. int result = 1;
  34. result = prime * result + ((id == null) ? 0 : id.hashCode());
  35. result = prime * result + ((name == null) ? 0 : name.hashCode());
  36. result = prime * result + ((age == null) ? 0 : age.hashCode());
  37. result = prime * result + ((address == null) ? 0 : address.hashCode());
  38. return result;
  39. }
  40. @Override
  41. public boolean equals(Object obj) {
  42. if (this == obj) {
  43. return true;
  44. }
  45. if (obj == null) {
  46. return false;
  47. }
  48. if (getClass() != obj.getClass()) {
  49. return false;
  50. }
  51. User other = (User) obj;
  52. if (id == null) {
  53. if (other.id != null) {
  54. return false;
  55. }
  56. } else if (!id.equals(other.id)) {
  57. return false;
  58. }
  59. if (name == null) {
  60. if (other.name != null) {
  61. return false;
  62. }
  63. } else if (!name.equals(other.name)) {
  64. return false;
  65. }
  66. if (age == null) {
  67. if (other.age != null) {
  68. return false;
  69. }
  70. } else if (!age.equals(other.age)) {
  71. return false;
  72. }
  73. if (address == null) {
  74. if (other.address != null) {
  75. return false;
  76. }
  77. } else if (!address.equals(other.address)) {
  78. return false;
  79. }
  80. return true;
  81. }
  82. }

之后调用即可

[java] view plain copy

  1. private static List<User> removeListDuplicateObject(List<User> list) {
  2. System.out.println(Arrays.toString(list.toArray()));
  3. Set<User> set = new HashSet<User>();
  4. set.addAll(list);
  5. System.out.println(Arrays.toString(set.toArray()));
  6. List<User> listnewList = new ArrayList<User>(set);
  7. return listnewList;
  8. }

附上一个按某个字段排序的功能:

[java] view plain copy

  1. @Override
  2. public int compareTo(DBBakPolicyDetail arg0) {
  3. if(this.getDbName() == null && arg0.getDbName() == null){
  4. return 0;
  5. }else if(this.getDbName() == null && arg0.getDbName() != null){
  6. return 1;
  7. }else if(this.getDbName() != null && arg0.getDbName() == null){
  8. return -1;
  9. }else {
  10. return this.getDbName().compareTo(arg0.getDbName());
  11. }
  12. }

[java] view plain copy

List特点:元素有放入顺序,元素可重复 
Map特点:元素按键值对存储,无放入顺序

Set特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在set中的位置是有该元素的HashCode决定的,其位置其实是固定的)

新建一个实体类

时间: 2024-10-29 10:47:43

Java List实体类去重的相关文章

将JSON数据转换成Java的实体类

思路:首先将JSON格式的数据转换成JSONObject,然后将JSONObject转换成Java的实体类(其中类属性包括List等类型) Java实体类: SearchFilter 类 1 public class SearchFilter { 2 private String groupOp; 3 4 private List<SearchRule> rules; 5 6 public String getGroupOp() { 7 return groupOp; 8 } 9 10 pub

快速创建和mysql表对应的java domain实体类

今天创建了一个表有十几个字段,创建完之后必然要写一个与之对应的java domain实体类.这不是重复的工作吗?为什么不先把这个表的所有的字段查出来,然后放到linux环境下,用sed工具在每一行的前面加上"private String ",每一行的后面添加";".这样可以节省很多重复工作.下面上sql代码和sed命令. 查询一个mysql表所有列的列名的sql代码如下: SELECT COLUMN_NAME FROM information_schema.COLU

java pojo实体类做birt报表数据源

环境要求:到http://www.eclipse.org/downloads/下载 Eclipse IDE for Java and Report Developers 工具 第一步:创建一java项目ReportJava:第二步:创建包yss.com并编写一实体类User 作为报表中的数据对象 package com.yss; public class User {     private String name;     private String phone;     private S

Java常用实体类--System类

字符串.日期.数字是Java程序中最常使用的数据对象,对这些数据的创建.修改.格式化和转换等操作融入在Java程序的每个角落,必须熟练掌握.本节将通过实例演示以下常用实体类 Java系统级类:系统类System.运行时类Runtime Java字符串处理类:字符串类String.字符串分隔符类StringTokenizer.线程安全的可变字符串类StringBuffer.可变字符串类StringBuilder Java日期处理类:日期类Date.日期格式化类DateFormate.日历类Cale

java 根据实体类创建映射文件

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Field; import java.util.List; import java.util.Set; import com.mohe.model.entity.Teach; /** * 根据实体类生成映射文件 * * @author dxm * */ public class Obj

java生成实体类的工具内部是如何实现的(mysql)

一.认识INFORMATION_SCHEMA数据库 INFORMATION_SCHEMA数据库提供了访问数据库元数据(数据的数据)的方式 该数据库中存放有数据库名.表名,列名.列的数据类型等各种数据 生成实体类就要从该数据库下手 二.显示所有的数据库 生成实体类,往往要先选择数据库,这个非常简单,只需要简单的一句sql即可获得所有的数据库 show databases; 三.利用TABLES表获取数据库中的表 下一步,要显示所选数据库的所有的表,这里就用到了前面所提的INFORMATION_SC

Java常用实体类

System类 访问系统属性 - 遍历 1 package org.zln.usefulclass.system; 2 3 import java.util.Properties; 4 5 /** 6 * Created by sherry on 000024/6/24 23:08. 7 */ 8 public class TestSystemProperty { 9 public static void main(String[] args) { 10 //showSystemProperti

Java常用实体类--Runtime类

System许多函数的使用都是等价于Runtime.getRuntime(),可见System和Runtime之间的联系是多么密切,实际上System是依赖于Runtime类的. Runtime的功能如下: 查看系统内存 终止JVM虚拟机 运行系统程序 使用关闭钩子 Runtime类不同于System类,它的函数大部分都不是静态的,只有一个静态函数getRuntime().每个Java应用程序都有一个Runtime实例,使应用程序能够与其运行环境相连接,我们可通过该函数获得一个Runtime()

Java中 实体类 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念

PO(persistant object) 持久对象 在 o/r 映射的时候出现的概念,如果没有 o/r 映射,没有这个概念存在了.通常对应数据模型 ( 数据库 ), 本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的 java 对象.最简单的 PO 就是对应数据库中某个表中的一条记录,多个记录可以用 PO 的集合. PO 中应该不包含任何对数据库的操作. DO(Domain Object)领域对象 就是从现实世界中抽象出来的有形或无形的业务实体.一般和数据中的表结构对应. TO(Tr