网站首页 > 技术文章 正文
为什么要展开这个讨论
今天和我 Leader 在一起写段代码时,用到了一个 TreeSet 集合(为了能够去重有顺序),但是在传递参数的时候,发现别人用的是 List 集合接收, 而我们用的是 TreeSet 集合,所以这里就需要进行转换!然后脑海里想到最常用的就是 new ArrayList()
但是除了这种方式,我感觉不够优雅,所以我就查看了下,还有没有其他好的方法,发现还真有其他几种方法,为了方便我自己能够对其印象深刻,下面我们就一起来讨论一下吧:
Show Time
国服安琪拉(我):大家好!今天我们要来聊一聊一个激动人心的话题:如何在 Java 中把 Set 集合变成 List 集合!而且,重点来了,TreeSet 转成 List 后,顺序会不会乱?各位对这个话题怎么看?
非洲猴:哇,这话题简直太棒了!就像变魔术一样。首先,我们得提到最常见的转换方法:使用 ArrayList 构造函数。想象一下,Set 就像个古怪的魔法师,变成 List 后又优雅又有序!
Set<String> set = new TreeSet<>(Arrays.asList("苹果", "香蕉", "橘子"));
List<String> list = new ArrayList<>(set);
貂蝉:没错!这个转换就像给魔法师换上了华丽的外套,顺序可不会变。TreeSet 是个有序的小家伙,转身后依然优雅。
小卤蛋:说得对!但如果是 HashSet,顺序就有点像在狂欢派对上喝多了,完全乱了套。哈哈,谁知道会变成什么样子呢?
非洲猴:哈哈,这比喻太形象了!除了构造方法,我们还有 Stream API 的选择。使用它就像在用一根魔杖轻轻一挥,优雅又时尚:
List<String> list = set.stream().collect(Collectors.toList());
不过,使用 Stream API 时,性能会不会受到影响呢?
貂蝉:是的,这就是个问题!Stream 在处理大数据量时可能会稍慢,像是魔法需要更多时间来准备。如果我们用手动循环,那就更慢了,像是手忙脚乱地准备一场派对。
List<String> list = new ArrayList<>();
for (String item : set) {
list.add(item);
}
小卤蛋:没错!如果追求性能,还是用构造方法最靠谱。就像选择一辆快速的魔法飞车,而不是走路去派对。
国服安琪拉(我):看来大家的看法都很有趣!所以,总结一下,TreeSet 转成 List 后顺序不变,推荐使用构造方法,而 Stream API 适合那些追求优雅代码的人。就像一场关于魔法和效率的较量,谁才是最终的胜者呢?
非洲猴:让我们继续讨论下去!这场讨论就像一场编码的盛宴,希望大家都能从中找到灵感,写出更加出色的代码!
貂蝉:对,让我们一起在 Java 的魔法世界中,尽情施展我们的代码魅力吧!
国服安琪拉(我):谢谢大家的参与!期待下次的精彩讨论!
- 上一篇: Python 中如何将列表转换为字符串?
- 下一篇: Java Array 和 String 的转换
猜你喜欢
- 2025-01-13 Java 中 List 分片的 5 种方法
- 2025-01-13 你见过哪些实用到爆的 Java 代码技巧?
- 2025-01-13 手把手教你搭建一个基于Java的分布式爬虫系统「转」
- 2025-01-13 List的扩容机制,你真的明白吗?
- 2025-01-13 C# 基础知识系列- 3 集合数组
- 2025-01-13 去除 List 中的重复元素,你知道几种实现方法?
- 2025-01-13 C#中的List可以存储哪些类型的数据?
- 2025-01-13 java8对List集合根据某一字段进行分组
- 2025-01-13 PCHMI5.5二次开发文档(更新)
- 2025-01-13 Qt QString字符串分割、截取的3种方法
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)