如果程序员想实现某种功能,有两条路可以走。一条就是自己实现,一条就是调用别人的实现,别人的实现就是所谓的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(), ",");
} }

最新文章

  1. Sequence Project Showplan Operator 序列映射运算符
  2. php.ini 安全配置
  3. Erlang在Windows上开发环境搭建全过程讲解目录
  4. NPOI生成单元格(列)下拉框
  5. ubuntu su 密码 (转)
  6. solrj6.2异常--Expected mime type application/octet-stream but got text/html.
  7. win7下文件名不能定义为con(任何文件格式)
  8. 辛星PHP教程之yii和ci教程已经写完,望与朋友们交流
  9. AngularJS 实现页面滚动到底自动加载数据的功能
  10. flask框架+pygal+sqlit3搭建图形化业务数据分析平台
  11. [bzoj4755][Jsoi2016]扭动的回文串
  12. 3.5 unittest生成测试报告HTMLTestRunner
  13. 如何在 SCSS 使用 JavaScript 变量/scss全局变量
  14. 洛谷 P2764 最小路径覆盖问题 解题报告
  15. Js中的判空
  16. /src/applicationContext.xml
  17. SNMP学习笔记之SNMP4J介绍(Java)
  18. 【算法学习】【洛谷】树链剖分 &amp; P3384 【模板】树链剖分 P2146 软件包管理器
  19. SQL中利用脚本创建database mail.
  20. MR案例:MR和Hive中使用Lzo压缩

热门文章

  1. 056 Java搭建kafka环境
  2. day19 正则,re模块
  3. 动态规划状态压缩-poj1143
  4. 橡皮筋进度条ElasticProgressBar
  5. angular笔记_6
  6. CCF-学生排队
  7. BZOJ.2565.[国家集训队]最长双回文串(Manacher/回文树)
  8. Spring使用笔记(三) 高级装配
  9. 树形动态规划(树形DP)入门问题—初探 &amp; 训练
  10. It is not safe to rely on the system&#39;s timezone settings错误