mybatis --- 如何相互转换逗号分隔的字符串和List
2024-08-24 14:22:38
如果程序员想实现某种功能,有两条路可以走。一条就是自己实现,一条就是调用别人的实现,别人的实现就是所谓的API。而且大多数情况下,好多“别人”都 实现了这个功能。程序员有不得不在这其中选择。大部分情况下,程序员就会知道哪个用哪个,先看到哪个用哪个。到最后,在实际项目中,同样的功能会调用五花 八门的API。我在公司的项目中就看到了这种情况。其实,也无可厚非,我相信好多项目都是这个样子。我们不可能要求程序员都用同一种方法。程序员可能会有 不同的好恶。为了让程序员能快乐自由地编程,就随他去吧!因为程序员感觉自由的时候,感觉快乐的时候,正是他们生产力最高的时候。
不扯淡了。回归正题,到底这些不同的实现方法或者API真的就没有高低贵贱之分?以我遇到这个逗号分隔字符串转List为例,探讨探讨:
注:下面的代码并不能保证能运行,可能需要稍微的修改。
将逗号分隔的字符串转换为List
方法 1: 利用JDK的Arrays类
String str = "a,b,c";
List<String> result = Arrays.asList(str.split(","));
方法 2: 利用Guava的Splitter
String str = "a, b, c";
List<String> result = Splitter.on(",").trimResults().splitToList(str);
方法 3: 利用Apache Commons的StringUtils (只是用了split)
String str = "a,b,c";
List<String> result = Arrays.asList(StringUtils.split(str,","));
方法 4: 利用Spring Framework的StringUtils
String str = "a,b,c";
List<String> str = Arrays.asList(StringUtils.commaDelimitedListToStringArray(str));
将List转换为逗号分隔符
方法 1: 利用JDK (好像没有很好的方法,需要一步一步实现)
NA
方法 2: 利用Guava的Joiner
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
String str = Joiner.on(",").join(list);
方法 3: 利用Apache Commons的StringUtils
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
String str = StringUtils.join(list.toArray(), ",");
方法 4:利用Spring Framework的StringUtils
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
String str = StringUtils.collectionToDelimitedString(list, ",");
比较下来,我的观点就是Guava库更灵活,适用面更广。项目中如果没有引入Guava的话,那就加上它。
//拼接所有字符串
public String getAllIdByUserMobile( List<String> userMobile) throws Exception {
StringBuilder userMobileIdString = new StringBuilder();
//拼接字符串 userMobile productId
if( userMobile.size() <= ){
return "";
}else{
for(String item:userMobile){
userMobileIdString.append(item + ",");
}
return org.apache.commons.lang.StringUtils.removeEnd(userMobileIdString.toString(), ",");
} }
最新文章
- Sequence Project Showplan Operator 序列映射运算符
- php.ini 安全配置
- Erlang在Windows上开发环境搭建全过程讲解目录
- NPOI生成单元格(列)下拉框
- ubuntu su 密码 (转)
- solrj6.2异常--Expected mime type application/octet-stream but got text/html.
- win7下文件名不能定义为con(任何文件格式)
- 辛星PHP教程之yii和ci教程已经写完,望与朋友们交流
- AngularJS 实现页面滚动到底自动加载数据的功能
- flask框架+pygal+sqlit3搭建图形化业务数据分析平台
- [bzoj4755][Jsoi2016]扭动的回文串
- 3.5 unittest生成测试报告HTMLTestRunner
- 如何在 SCSS 使用 JavaScript 变量/scss全局变量
- 洛谷 P2764 最小路径覆盖问题 解题报告
- Js中的判空
- /src/applicationContext.xml
- SNMP学习笔记之SNMP4J介绍(Java)
- 【算法学习】【洛谷】树链剖分 &; P3384 【模板】树链剖分 P2146 软件包管理器
- SQL中利用脚本创建database mail.
- MR案例:MR和Hive中使用Lzo压缩
热门文章
- 056 Java搭建kafka环境
- day19 正则,re模块
- 动态规划状态压缩-poj1143
- 橡皮筋进度条ElasticProgressBar
- angular笔记_6
- CCF-学生排队
- BZOJ.2565.[国家集训队]最长双回文串(Manacher/回文树)
- Spring使用笔记(三) 高级装配
- 树形动态规划(树形DP)入门问题—初探 &; 训练
- It is not safe to rely on the system&#39;s timezone settings错误