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

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

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

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

新建一个实体类

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

调用即可

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

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

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

之后调用即可

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

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

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

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

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

新建一个实体类

 

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

  1. 将JSON数据转换成JAVA的实体类

    思路:首先将JSON格式的数据转换成JSONObject,然后将JSONObject转换成Java的实体类(其中类属性包括List等类型) Java实体类: SearchFilter 类 1 publ ...

  2. 高速创建和mysql表相应的java domain实体类

    今天创建了一个表有十几个字段,创建完之后必定要写一个与之相应的java domain实体类. 这不是反复的工作吗?为什么不先把这个表的全部的字段查出来,然后放到linux环境下,用sed工具在每一行的 ...

  3. java 获取实体类对象属性值的方法

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...

  4. 【转】java遍历实体类的属性和数据类型以及属性值

    和同学接了个外包的活,由于项目中很多地方要用到poi导出excel,而每次导出都要写很多相同的代码,因为poi的cell.setCellValue();每次设置的都是不同实体bean的属性值,导致代码 ...

  5. java遍历实体类的属性和数据类型以及属性值

    遍历实体类的树形和数据类型一级属性值 /** * 遍历实体类的属性和数据类型以及属性值 * @param model * @throws NoSuchMethodException * @throws ...

  6. 【java】实体类中 Set<对象> 按照对象的某个字段对set排序

    背景: User实体类 有个属性是 Set<PositionChange> 职位变更字段 如下: PositionChange实体类  有个属性是positionStartDate   什 ...

  7. java通过实体类组装报文

    条件: 1.实体类字段名 首字母小写(java规范),再通过报文的需求,填充的时候做对应修改即可(正常报文首字母是大写的)! 2.假如xml标签首字母是小写,那么实体类就给大写,首字母是大写,那么实体 ...

  8. Java代码实体类生成SQL语句(Java实体类转数据库)

    有的时候把数据库删了,如果照着实体类重新创建数据库的话比较麻烦,可以使用这个工具,把代码复制到项目里面设置一下即可把Java代码中的实体类转换为SQL语句输出为一个文件,打开执行命令即可. 下载:ht ...

  9. java遍历实体类的属性和值

    代码如下: 实体类: public class User implements Serializable { private static final long serialVersionUID = ...

随机推荐

  1. 什么情况下用+运算符进行字符串连接比调用StringBuffer/StringBuilder对象的append性能好

    如果在编写代码的过程中大量使用+进行字符串评价还是会对性能造成比较大的影响,但是使用的个数在1000以下还是可以接受的,大于10000的话,执行时间将可能超过1s,会对性能产生较大影响.如果有大量需要 ...

  2. HDU 4708:Rotation Lock Puzzle

    Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. Round Numbers(组合数学)

    Round Numbers Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10484 Accepted: 3831 Descri ...

  4. office软件

    32位系统office2013: http://pan.baidu.com/s/1bnCqMZ1 64位系统office2013: http://pan.baidu.com/s/1i33rdHF vi ...

  5. 覆盖率测试工具gcov的前端工具_LCOV

    http://my.oschina.net/alphajay/blog/33725 1.Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候 ...

  6. SharePoint自动化系列——创建MMS terms

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ PowerShell脚本实现MMS group.termSet.terms的自动化创建: Add- ...

  7. spoj 3871. GCD Extreme 欧拉+积性函数

    3871. GCD Extreme Problem code: GCDEX Given the value of N, you will have to find the value of G. Th ...

  8. Android 内存分析工具 - LogCat GC

    一.GC_Reason 触发垃圾回收的回收的集中原因: 类型 描述 GC_CONCURRENT 内存使用将满时,并发的进行垃圾回收. GC_FOR_MALLOC 当内存已满应用尝试分配内存时会出触发垃 ...

  9. WPFのTopMost属性的应用

    最近做一个东西,需要用到多个子窗体层级关系,首先,有一个MainWindow,然后有一个win1和win2甚至更多,我需要达到的控制是,win1选为focus的时候,win2在win1的上面,TopM ...

  10. if else 语句练习

    一.if  else 语句.