Java 递归的方式将list集合的某一字段拼接单个String
场景介绍
要将list 集合中的某一个字段合并成一个字符串,并且要用符号 “|” 分割开每个拼接后的字段。
一个例子胜于一切的文字表达,拼接后的结果如下
str1|str2|str3|strn
其实用for 循环很简单就可以实现了,但可能你更喜欢递归的方式实现。
代码实现:
public static void main(String[] args) {
Stu stu1 = new Stu("张三",18);
Stu stu2 = new Stu("李四",18);
Stu stu3 = new Stu("王五",18);
List<Stu> list = new ArrayList<Stu>();
list.add(stu1);
list.add(stu2);
list.add(stu3);
String loopJoint = loopJointDESC(list, list.size());
System.out.println(loopJoint);
}
/**
* 实现学生集合的姓名拼接:name1|name2|nameN
* @param list
* @param size 控制递归次数(size=list.size())
* @return
*/
public static String loopJointDESC(List<Stu> list,int size ) {
if(list.size()<=0) return null;
if(size==1) return list.get(0).getName();
String joinStr = "|";
size--;//下标值和递归次数减少1
String name = list.get(size).getName();
String loopJoint = loopJointDESC(list, size);
return name+joinStr+loopJoint;
}
实体类
public class Stu {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Stu(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public Stu() {
super();
}
}
测试结果

发现反过来拼接了,于是改为
public static String loopJointASC(List<Stu> list,int size ) {
if(list.size()<=0) return null;
if(size==1) return list.get(list.size()-1).getName();
String joinStr = "|";
String name = list.get(list.size()-size).getName();
size--;//下标值和递归次数减少1
String loopJoint = loopJointASC(list, size);
return name+joinStr+loopJoint;
}
测试结果

分隔符 “|” 可自己定义也可以删除。
最后留下两个问题:
当list非常大的时候,使用for 循环和递归哪种实现方式的速度更快呢?
双层for 循环改为,for循环+递归性能会不会更好呢?
更多优质文章、学习资源、IDEA激活码等请关注

Java 递归的方式将list集合的某一字段拼接单个String的更多相关文章
- java中GET方式提交和POST方式提交
java中GET方式提交的示例: /** * 获取关注列表; * @return */ @SuppressWarnings("unchecked") public static A ...
- Java非递归的方式获取目录中所有文件(包括目录)
零.思路解析 对于给出的文件查看其下面的所有目录,将这个目录下的所有目录放入待遍历的目录集合中,每次取出该集合中的目录遍历,如果是目录再次放入该目录中进行遍历. 一.代码 /** * 非递归的方式获取 ...
- Java常用排序算法及性能测试集合
测试报告: Array length: 20000 bubbleSort : 573 ms bubbleSortAdvanced : 596 ms bubbleSortAdvanced2 : 583 ...
- Java笔记(二十二)……Collection集合
概述 为什么会出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合类同是容器,有何不同 数组虽然也可以存储 ...
- Java基础学习笔记十五 集合、迭代器、泛型
Collection 集合,集合是java中提供的一种容器,可以用来存储多个数据. 在前面的学习中,我们知道数据多了,可以使用数组存放或者使用ArrayList集合进行存放数据.那么,集合和数组既然都 ...
- Java多线程 阻塞队列和并发集合
转载:大关的博客 Java多线程 阻塞队列和并发集合 本章主要探讨在多线程程序中与集合相关的内容.在多线程程序中,如果使用普通集合往往会造成数据错误,甚至造成程序崩溃.Java为多线程专门提供了特有的 ...
- [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool
测试工具使用递归的方式获取子进程的Msg消息,目前有2种常用的ExecutorService / ForkJoinPool 为了测试哪种效果较好,我们来写个测试Demo,循环5555555次+1(加锁 ...
- Java高级特性 第1节 集合框架和泛型
Java中,存储多个同类型的数据,可以用数组来实现,但数组有一些缺陷: 数组长度固定不变,布恩那个很好的适应元素数量动态变化的情况 可以通过数组.length获取数组长度,却无法直接获取数组中实际存储 ...
- MyBatis基础入门《四》接口方式.Select查询集合
MyBatis基础入门<四>接口方式.Select查询集合 描述: 在<MyBatis基础入门<二>Select查询>中有说过,SQLSession有两种用法,这里 ...
- java递归之“二叉树”
物有本末,事有始终,知所先后,则近道矣.-----题记. BotWong半路入行it做码农,也就半年时间,竟“不知天高地厚”地来到了深圳闯天下.一口气投了百个简历,一周后终于有公司邀约面试,除了基础的 ...
随机推荐
- 【C++】为什么含有纯虚函数的类无法定义对象
纯虚函数的地址为空,无法分配内存,纯虚成员函数对类是没有意义的,失去了普通类的数据和方法绑定于同一对象中的意义,因此无法构造对象,只能由其派生类继承这些成员函数并实现,才能构造派生类对象. 纯虚成员函 ...
- js - body的滚动事件的坑
文章来源 : https://www.cnblogs.com/Zting00/p/7497629.html 踩过些坑,得到的结论,不一定精确 1. body的滚动条,刷新页面的时候不会回到顶部.其他d ...
- [转帖]Jmeter接口测试:${__UUID()}函数
UUID函数返回一个伪随机类型的通用唯一标识符ID. UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写.UUID是基于当前时间戳.随机数和硬件标识(例如 ...
- 申威3231服务器Redis性能验证-及最全信创CPU性能分析
申威3231服务器Redis性能验证-及最全信创CPU性能分析 背景 公司里面新进了几台服务器. 有台申威服务器. 因为前段时间参与过一次申威的POC验证. 当时对性能有一点简单的理解. 但是因为不方 ...
- [转帖]【mmap】深度分析mmap:是什么 为什么 怎么用 性能总结
https://blog.csdn.net/bandaoyu/article/details/106750990 目录 有什么用? 1.文件映射 2.分配内存(匿名文件映射) mmap基础概念 mma ...
- Python学习之六_同时访问Oracle和Mysql的方法
Python学习之六_同时访问Oracle和Mysql的方法 背景 jaydebeapi 可以访问大部分数据库. 但是他有一个问题是仅能够访问一种类型的数据库. 如果同事连接两种数据库,那么就会出现问 ...
- [转帖]ebpf 月报 - 2023 年 1 月
https://segmentfault.com/a/1190000043355631 本刊物旨在为中文用户提供及时.深入.有态度的 ebpf 资讯. 如果你吃了鸡蛋觉得好吃,还想认识下蛋的母鸡,欢迎 ...
- [转帖]windows使用net user add用户并加入管理员,从而支持rdp远程登陆访问
C:\phpstudy_pro\WWW> net user test2 /add 命令成功完成. C:\phpstudy_pro\WWW> net user test2 Huawei ...
- Python 潮流周刊第 29 期(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 探索 GO 项目依赖包管理与Go Module常规操作
探索 GO 项目依赖包管理与Go Module常规操作 目录 探索 GO 项目依赖包管理与Go Module常规操作 一.Go 构建模式的演变 1.1 GOPATH (初版) 1.1.1 go get ...