Java8使用StringJoiner看這一篇就夠了
????點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”
優(yōu)質(zhì)文章,第一時(shí)間送達(dá)
66套java從入門到精通實(shí)戰(zhàn)課程分享
Set?catSet?=?new?HashSet<>(2);
?
????@Before
????public?void?init()?{
????????Cat?cat?=?new?Cat();
????????cat.setName("老大");
????????cat.setAge(1);
????????catSet.add(cat);
????????Cat?cat2?=?new?Cat();
????????cat2.setName("老二");
????????cat2.setAge(2);
????????catSet.add(cat2);
?
????}
?
????@Test
????public?void?print1()?{
?
????????//?給出友好提示
????????StringBuilder?stringBuilder?=?new?StringBuilder();
????????stringBuilder.append("[");
????????Iterator?iterator?=?catSet.iterator();
????????int?seq?=?0;
????????while?(iterator.hasNext())?{
????????????seq++;
????????????stringBuilder.append(seq);
????????????stringBuilder.append(":");
????????????stringBuilder.append(iterator.next().getName());
????????????if?(seq?!=?catSet.size())?{
????????????????stringBuilder.append(",");
????????????}
????????}
????????stringBuilder.append("]");
????????Assert.assertEquals("[1:老二,2:老大]",?stringBuilder.toString());
?
????}
添加元素
@Test
public?void?whenAddingElements_thenJoinedElements()?{
????StringJoiner?joiner?=?new?StringJoiner(",",?PREFIX,?SUFFIX);
????joiner.add("Red")
??????.add("Green")
??????.add("Blue");
?
????assertEquals(joiner.toString(),?"[Red,Green,Blue]");
}
@Test
public?void?whenAddingListElements_thenJoinedListElements()?{
????List?rgbList?=?new?ArrayList<>();
????rgbList.add("Red");
????rgbList.add("Green");
????rgbList.add("Blue");
?
????StringJoiner?rgbJoiner?=?new?StringJoiner(
??????",",?PREFIX,?SUFFIX);
?
????for?(String?color?:?rgbList)?{
????????rgbJoiner.add(color);
????}
?
????assertEquals(rgbJoiner.toString(),?"[Red,Green,Blue]");
}
構(gòu)造
private?String?PREFIX?=?"[";
private?String?SUFFIX?=?"]";
?
@Test
public?void?whenEmptyJoinerWithoutPrefixSuffix_thenEmptyString()?{
????StringJoiner?joiner?=?new?StringJoiner(",");
??
????assertEquals(0,?joiner.toString().length());
}
?
@Test
public?void?whenEmptyJoinerJoinerWithPrefixSuffix_thenPrefixSuffix()?{
????StringJoiner?joiner?=?new?StringJoiner(
??????",",?PREFIX,?SUFFIX);
??
????assertEquals(joiner.toString(),?PREFIX?+?SUFFIX);
}@Test
public?void?whenEmptyJoinerWithEmptyValue_thenDefaultValue()?{
????StringJoiner?joiner?=?new?StringJoiner(",");
????joiner.setEmptyValue("default");
?
????assertEquals(joiner.toString(),?"default");
}
?
@Test
public?void?whenEmptyJoinerWithPrefixSuffixAndEmptyValue_thenDefaultValue()?{
????StringJoiner?joiner?=?new?StringJoiner(",",?PREFIX,?SUFFIX);
????joiner.setEmptyValue("default");
?
????assertEquals(joiner.toString(),?"default");
}
Joiners組合使用
private?String?PREFIX?=?"[";
private?String?SUFFIX?=?"]";
?
@Test
public?void?whenMergingJoiners_thenReturnMerged()?{
????StringJoiner?rgbJoiner?=?new?StringJoiner(
??????",",?PREFIX,?SUFFIX);
????StringJoiner?cmybJoiner?=?new?StringJoiner(
??????"-",?PREFIX,?SUFFIX);
?
????rgbJoiner.add("Red")
??????.add("Green")
??????.add("Blue");
????cmybJoiner.add("Cyan")
??????.add("Magenta")
??????.add("Yellow")
??????.add("Black");
?
????rgbJoiner.merge(cmybJoiner);
?
????assertEquals(
??????rgbJoiner.toString(),?
??????"[Red,Green,Blue,Cyan-Magenta-Yellow-Black]");
}
利用Stream API
@Test
public?void?whenUsedWithinCollectors_thenJoined()?{
????List?rgbList?=?Arrays.asList("Red",?"Green",?"Blue");
????String?commaSeparatedRGB?=?rgbList.stream()
??????.map(color?->?color.toString())
??????.collect(Collectors.joining(","));
?
????assertEquals(commaSeparatedRGB,?"Red,Green,Blue");
}
改進(jìn)
?@Test
????public?void?print()?{
????????StringJoiner?stringJoiner?=?new?StringJoiner(",",?"[",?"]");
????????Iterator?iterator?=?catSet.iterator();
????????int?seq?=?0;
????????while?(iterator.hasNext())?{
????????????seq++;
????????????stringJoiner.add(seq?+?":"?+?iterator.next().getName());
????????}
????????Assert.assertEquals("[1:老二,2:老大]",?stringJoiner.toString());
????}
???@Test
????public?void?print2()?{
List?catList?=?new?ArrayList<>(catSet);
????????String?result?=?IntStream.range(0,catList.size()).mapToObj(i->i+":"+?catList.get(i).getName()).collect(Collectors.joining(",",?"[",?"]"));
????????Assert.assertEquals("[1:老二,2:老大]",?result);
????}
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接和本聲明。
本文鏈接:
https://blog.csdn.net/w605283073/article/details/89527280
粉絲福利:實(shí)戰(zhàn)springboot+CAS單點(diǎn)登錄系統(tǒng)視頻教程免費(fèi)領(lǐng)取
???
?長按上方微信二維碼?2 秒 即可獲取資料
感謝點(diǎn)贊支持下哈?
評(píng)論
圖片
表情
