字符串拆成集合简单,集合再合成字符串就有点麻烦.
对于Javascript,一个join方法就可以解决问题,可惜Java的集合没有提供join的方法.
不过强大的Java的三方库提供了类似的功能,例如
1 2 3 4 5 6 |
//Commons Lang: org.apache.commons.lang.StringUtils.join(list, conjunction); //Spring: org.springframework.util.StringUtils. collectionToDelimitedString(list, conjunction); |
当然也可以自己写一个实现,常见的写法为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static String join(Collection c, String delim) { if (c == null || c.size()==0) { return ""; } StringBuilder sb = new StringBuilder(); Iterator it = c.iterator(); int i = 0; while (it.hasNext()) { if (i++ > 0) { sb.append(delim); } sb.append(it.next()); } return sb.toString(); } |
总觉得循环中的if很别扭,很想把它干掉,于是有了稍稍优雅的写法:
1 2 3 4 5 6 7 8 9 10 11 12 |
public static String join(String delimiter, Iterable<? extends Object> objs) { if (objs == null || !objs.hasNext()) { return ""; } Iterator<? extends Object> iter = objs.iterator(); StringBuilder buffer = new StringBuilder(); buffer.append(iter.next()); while (iter.hasNext()) { buffer.append(delimiter).append(iter.next()); } return buffer.toString(); } |
最新评论
昨天发现的,然后在application.yml中配置“hibernate.dialect.storage_engine=innodb”。但是自动生成的表还是不会设置为innoDB,看了底层源码。这个配置也是没有加载到的 原来是要在hibernate.properties中加这个配置。感谢
将virtualbox虚拟网卡驱动卸载了,然后就会好了,但是这个时候virtualbox虚拟网络就无法使用了,重新安装一下virtualbox就好了
我也发现了这个注释:注释“Use "hibernate.dialect.storage_engine=innodb" environment variable or JVM system property instead.” ----- 坑啊。。。。。。。
卸载蓝牙驱动·在设备里面找,一般在网卡那里 卸载重启就行了
高