java 中有没有类似java string join方法.join

2008年8月 .NET技术大版内专家分月排行榜第一
2008年6月 .NET技术大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。guava中的join和split功能 - jackyrong - ITeye博客
博客分类:
guava库中,包含了很好的join和split的功能,例子如下:
1) 将LIST转换为使用字符串连接的字符串
&&
List&String& names = Lists.newArrayList("John", "Jane", "Adam", "Tom");
String result = Joiner.on(",").join(names);
assertEquals(result, "John,Jane,Adam,Tom");
2)使用joiner把MAP转成STRING
public void whenConvertMapToString_thenConverted() {
Map&String, Integer& salary = Maps.newHashMap();
salary.put("John", 1000);
salary.put("Jane", 1500);
String result = Joiner.on(" , ").withKeyValueSeparator(" = ")
.join(salary);
assertThat(result, containsString("John = 1000"));
assertThat(result, containsString("Jane = 1500"));
3 将嵌套的collection join起来
&&
public void whenJoinNestedCollections_thenJoined() {
List&ArrayList&String&& nested = Lists.newArrayList(
Lists.newArrayList("apple", "banana", "orange"),
Lists.newArrayList("cat", "dog", "bird"),
Lists.newArrayList("John", "Jane", "Adam"));
String result = Joiner.on(";").join(Iterables.transform(nested,
new Function&List&String&, String&() {
public String apply(List&String& input) {
return Joiner.on("-").join(input);
assertThat(result, containsString("apple-banana-orange"));
assertThat(result, containsString("cat-dog-bird"));
assertThat(result, containsString("apple-banana-orange"));
4 当使用joiner时候处理null值
&& 有几个对付NULL值的方法,第一个是skipNulls().
public void whenConvertListToStringAndSkipNull_thenConverted() {
List&String& names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom");
String result = Joiner.on(",").skipNulls().join(names);
assertEquals(result, "John,Jane,Adam,Tom");
&& 或者干脆将null值换掉,就是:
&
public void whenUseForNull_thenUsed() {
List&String& names = Lists.newArrayList("John", null, "Jane", "Adam", "Tom");
String result = Joiner.on(",").useForNull("nameless").join(names);
assertEquals(result, "John,nameless,Jane,Adam,Tom");
5 使用splitter方法把string转换为list
&&&
public void whenCreateListFromString_thenCreated() {
String input = "apple - banana - orange";
List&String& result = Splitter.on("-").trimResults()
.splitToList(input);
assertThat(result, contains("apple", "banana", "orange"));
6 使用splitter将string转为map
&&
public void whenCreateMapFromString_thenCreated() {
String input = "John=first,Adam=second";
Map&String, String& result = Splitter.on(",")
.withKeyValueSeparator("=")
.split(input);
assertEquals("first", result.get("John"));
assertEquals("second", result.get("Adam"));
7 guava还支持使用多个分隔符来分割字符,比如
&&
public void whenSplitStringOnMultipleSeparator_thenSplit() {
String input = "apple.banana,,orange,,.";
List&String& result = Splitter.onPattern("[.|,]")
.omitEmptyStrings()
.splitToList(input);
assertThat(result, contains("apple", "banana", "orange"));
8 每隔多少个字符进行分隔
&&
public void whenSplitStringOnSpecificLength_thenSplit() {
String input = "Hello world";
List&String& result = Splitter.fixedLength(3).splitToList(input);
assertThat(result, contains("Hel", "lo ", "wor", "ld"));
9 还可以让splitter在分割多少个字符后停止分隔,比如
&&
public void whenLimitSplitting_thenLimited() {
String input = "a,b,c,d,e";
List&String& result = Splitter.on(",")
.splitToList(input);
assertEquals(4, result.size());
assertThat(result, contains("a", "b", "c", "d,e"));
浏览: 4954647 次
来自: 广州
如果有多个@Primary 会怎么样?
今天也遇到这个问题了,果然好用,谢谢分享。
spring用起来好复杂啊,东西好多多多多多多多多多多多多多多 ...
hnlixf 写道
但假如又有一个叫order类的,需要访问 ...
请使用&mvc:annotation-driven&gt ...Java 5种字符串拼接方式性能比较。 -
- ITeye博客
博客分类:
最近写一个东东,可能会考虑到字符串拼接,想了几种方法,但对性能未知,于是用Junit写了个单元测试。
import java.util.ArrayL
import java.util.L
import mons.lang.StringU
import org.junit.T
import org.slf4j.L
import org.slf4j.LoggerF
public class TestString {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
public void testPlus() {
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i & 10000; i++) {
s = s + String.valueOf(i);
long te = System.currentTimeMillis();
("+ cost {} ms", te - ts);
public void testConcat() {
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i & 10000; i++) {
s = s.concat(String.valueOf(i));
long te = System.currentTimeMillis();
("concat cost {} ms", te - ts);
public void testJoin() {
List&String& list = new ArrayList&String&();
long ts = System.currentTimeMillis();
for (int i = 0; i & 10000; i++) {
list.add(String.valueOf(i));
StringUtils.join(list, "");
long te = System.currentTimeMillis();
("StringUtils.join cost {} ms", te - ts);
public void testStringBuffer() {
StringBuffer sb = new StringBuffer();
long ts = System.currentTimeMillis();
for (int i = 0; i & 10000; i++) {
sb.append(String.valueOf(i));
sb.toString();
long te = System.currentTimeMillis();
("StringBuffer cost {} ms", te - ts);
public void testStringBuilder() {
StringBuilder sb = new StringBuilder();
long ts = System.currentTimeMillis();
for (int i = 0; i & 100000; i++) {
sb.append(String.valueOf(i));
sb.toString();
long te = System.currentTimeMillis();
("StringBuilder cost {} ms", te - ts);
运行结果如下:
11:00:22,359& INFO TestString:23 - + cost 1828 ms
11:00:22,921& INFO TestString:34 - concat cost 562 ms
11:00:22,937& INFO TestString:46 - StringUtils.join cost 16 ms
11:00:22,968& INFO TestString:58 - StringBuffer cost 31 ms
11:00:23,031& INFO TestString:70 - StringBuilder cost 63 ms
要特别注意的是:
StringBuilder 循环的次数是其它的10倍,如果是一样,那么返回 0,可见StringBuilder 的速度之快。
用+的方式效率最差,concat由于是内部机制实现,比+的方式好了不少。
Join 和 StringBuffer,相差不大,Join方式要快些,可见这种JavaScript中快速拼接字符串的方式在Java中也非常适用。
StringBuilder 的速度最快,但其有线程安全的问题,而且只有JDK5支持。
浏览: 64055 次
来自: 南宁
正在研究这个,收藏一个。
请问一下那个beforeLoad:function(reque ...
这只是 C R U D但是,如有个导出 或者导入 之类的操作或 ...
xly_971223 写道唯快不破 写道hdragonh 写道 ...

我要回帖

更多关于 java string.join 的文章

 

随机推荐