第10篇 java 8----用流收集資料 -----連線字串
阿新 • • 發佈:2018-12-16
/** * 連線字串 */ public class Demo02 { public static void main(String[] args) { List<Dish> menues = Arrays.asList(new Dish("rice", true, 10000, Dish.Type.FISH), new Dish("meate", false, 20000, Dish.Type.FISH), new Dish("dog", true, 30000, Dish.Type.FISH)); test01(menues); } /** * joining工廠方法返回的收集器會把對流中每一個物件應用toString方法得到的所有字元 * 串連線成一個字串。這意味著你把選單中所有菜餚的名稱連線起來,如下所示: * 請注意,joining在內部使用了StringBuilder來把生成的字串逐個追加起來。此外還 * 要注意,如果Dish類有一個toString方法來返回菜餚的名稱,那你無需用提取每一道菜名稱的 * 函式來對原流做對映就能夠得到相同的結果 */ public static void test01(List<Dish> menues) { String nameString = menues.stream().map(Dish::getName).collect(joining()); System.out.println(nameString); // 但該字串的可讀性並不好。幸好,joining工廠方法有一個過載版本可以接受元素之間的 // 分界符,這樣你就可以得到一個逗號分隔的菜餚名稱列表: String nameString2 = menues.stream().map(Dish::getName).collect(Collectors.joining(", ")); System.out.println(nameString2); } }