在项目中看到一段代码:

return new ArrayList<>(new HashSet<LabelEnum>(list));

当时我的表情是这样的:

    这把list作为构造参数创建新的集合来返回是要做什么,这里的list也是ArrayList集合,这样绕了一圈返回,恩,
想起一句话“存在即是合理”开始琢磨业务需要:list中的元素不能有重复。
    那为什么不直接用HashSet呢?
因为这个list到时是要存入DTO中,所以尽量不修改原来的代码。使用list转换set再转回list,达到集合元素去重复的目的。

Set与List之间转化:

  • List list = new ArrayList(set);
  • Set set = new HashSet(list);
    但是有一点,转换当中可能要丢失数据,尤其是从list转换到set的时候,因为set不能有重复数据

测试:

public static void main(String[] args) {List<String> list = new ArrayList<>();Collections.addAll(list, "haha", "xixi", "huihui", "haha", "aaa");//填充System.out.println("list:" + list);Set<String> set = new HashSet<>(list);//通过构造函数给set填充list中的数据,内部就是初始化后调用的addAll(Collection<T>)
//   set.addAll(list);//或者用addAll(Collection<T>)方法给set填充,这时重复的数据"haha"将只存储第一个System.out.println("set:" + set);list.clear();//清空list,不然下次把set元素加入此list的时候是在原来的基础上追加元素的list.addAll(set);//把set的内容填充给listSystem.out.println("list:" + list);
}

结果:

        list:[haha, xixi, huihui, haha, aaa]   //说明list是有序的,可以存重复数据set:[aaa, haha, xixi, huihui]          //说明set是无序的,不可以存重复数据list:[aaa, haha, xixi, huihui]

List和Set之间的转换:达到集合元素去重复相关推荐

  1. php for循环可以变量关联数组,数组字符串变量之间的转换,数组元素的回调,for循环遍历关联数组...

    实例 header("content-type:text/html;charset=utf-8"); /*数组与字符串转换*/ //1.list()用在索引数组上 list($na ...

  2. 关于数组集合之间的转换

    开发中经常用到数组和集合之间的转换和集合与集合之间的转换. 在JDK中有现成的API中供我们使用. 1.首先是数组和集合之间的转换: 1 import java.util.ArrayList; 2 i ...

  3. Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin

    1.容器API的类图结构如下: JAVA的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,JAVA集合还可用于保存具有映射关系的关联数组 ...

  4. python列表、元组、字典、集合区别及他们之间的转换(超全)

    今天想先总结一下python中数据结构区别以及他们之间能如何转换         1. 基本属性 数据结构 列表(list) 元组(tuple) 字典(dict) 集合(set) 基本形式 [123, ...

  5. Java集合Map,set, list 之间的转换

    Java集合Map,set, list 之间的转换 前言: 通过思维导图复习联系,看到一个HashMap排序题上机题之后有的一个感想,题目如下,看看你能时间出来么? 已知一个HashMap<In ...

  6. java类型转换面试题_JavaSE:数据类型之间的转换(附常见面试题)

    数据类型之间的转换 分为以下几种情况: 1)低级到高级的自动类型转换: 2)高级到低级的强制类型转换(会导致溢出或丢失精度): 3)基本类型向类类型转换: 4)基本类型向字符串的转换: 5)类类型向字 ...

  7. DataSet和List 泛型之间互相转换 (转载, 作者写的很好)

    DataSet和List<T> 泛型之间互相转换 (转载, 作者写的很好) //DataSet与泛型集合间的互相转换 //利用反射机制将DataTable的字段与自定义类型的公开属性互相赋 ...

  8. python数据类型转换原因_浅谈Python数据类型之间的转换

    Python数据类型之间的转换 函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 compl ...

  9. python变量类型之间转换_Python常用数据类型之间的转换总结

    函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 complex(real [,imag]) ...

最新文章

  1. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(不同分组配置不同的箱体填充色+自定义调色板)实战
  2. 适合小白学的基础知识—SSTI漏洞学习
  3. 报告解读丨企服必看!如何高效搭建规模化营销获客体系?
  4. Redis的哨兵机制 或者心跳机制 模式 原理详解
  5. java mysql blob 存储图片_Java操作mysql存储图片
  6. 轮番滑动PHP,touch事件之滑动判断(左右上下方向)
  7. java构建xml参数_Java中使用XML创建EMAIL模板
  8. Java入门到精通——基础篇之static关键字
  9. 如果你手头有20万,你是拿去买房还是拿去投资?
  10. centos安装软件格式为rpm
  11. 【C#每日一帖】【转】提高编码效率的一些经验
  12. 统计.html,分类统计.html
  13. 台式计算机模拟软件,仿真软件 计算机仿真模拟常用软件有那些?
  14. 孙子算经 之 物不知数(韩信点兵)
  15. JDBC的五种连接方式
  16. 超漂亮的网页图文排版
  17. [C++]深复制与浅复制
  18. 小型温控系统c语言程序,pid算法温度控制c语言程序 - 全文
  19. GE智能平台针对严苛的仿真、过程控制和数据采集应用推出反射内存节点卡
  20. 如何用计算机思维解决问题

热门文章

  1. Android 源码 Camera2 获取 CameraId 列表
  2. 对账系统设计详解(下)
  3. 阿里B2B总裁戴珊:全球化的天猫双11,普惠全球共享快乐
  4. Idea创建ssm的MAVEN项目
  5. tcl卸载会怎么样 tvac_tcl电视用adb命令免root卸载系统自带第三方软件
  6. c语言时钟加秒表报告,51单片机秒表计时器课程设计报告(含C语言程序)...docx
  7. linux7防火墙拒绝ip访问,FirewallD防火墙常用经验——开放端口——拒绝某个IP访问...
  8. python中元组的值可变吗_python中对象的可变与不可变
  9. 【洛谷P4306】连通数【bitset 传递闭包】
  10. Linux重定向符号和特殊符号