Converting a List to a String with all the values of the List comma separated in Java 8 is really straightforward. Let’s have a look how to do that.
在Java 8中将集合List转变为用逗号分隔的String是非常简单的,下面让我看看如何做到
In Java 8
We can simply write String.join(..), pass a delimiter and an Iterable and the new StringJoiner will do the rest:
我们使用String.join()函数,给函数传递一个分隔符合一个迭代器,一个StringJoiner对象会帮助我们完成所有的事情
List<String> cities = Arrays.asList("Milan",
"London",
"New York",
"San Francisco");
String citiesCommaSeparated = String.join(",", cities);
System.out.println(citiesCommaSeparated);
//Output: Milan,London,New York,San Francisco
- 1
- 2
- 3
- 4
- 5
- 6
- 7
If we are working with stream we can write as follow and still have the same result:
如果我们采用流的方式来写,就像下面这样,仍然能够得到同样的结果
String citiesCommaSeparated = cities.stream()
.collect(Collectors.joining(","));
System.out.println(citiesCommaSeparated);
//Output: Milan,London,New York,San Francisco
Note: you can statically import java.util.stream.Collectors.joining if you prefer just typing "joining".
- 1
- 2
- 3
- 4
- 5
In Java 7
For old times’ sake, let’s have a look at the Java 7 implementation:
由于老的缘故,让我们看看在java 7中如何实现这个功能
private static final String SEPARATOR = ",";
public static void main(String[] args) {
List<String> cities = Arrays.asList(
"Milan",
"London",
"New York",
"San Francisco");
StringBuilder csvBuilder = new StringBuilder();
for(String city : cities){
csvBuilder.append(city);
csvBuilder.append(SEPARATOR);
}
String csv = csvBuilder.toString();
System.out.println(csv);
//OUTPUT: Milan,London,New York,San Francisco,
//Remove last comma
csv = csv.substring(0, csv.length() - SEPARATOR.length());
System.out.println(csv);
//OUTPUT: Milan,London,New York,San Francisco
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
As you can see it’s much more verbose and easier to make mistakes like forgetting to remove the last comma. You can implement this in several ways—for example by moving the logic that removes the last comma to inside the for-loop—but no implementation will be so explicative and easy to understand as the declarative solution expressed in Java 8.
正如你所看到的,这种方式更加啰嗦并且更加容易犯诸如忘记去除最后一个逗号之类的错误。你能够采用几种方式来完成这一功能-例如你可以将删除最后一个逗号的操作逻辑放到for循环中,但是没有一种实现方式向java 8中如此可解释性并且容易理解
Focus should be on what you want to do—joining a List of String—not on how.
注意力应该放到你想做什么-连接List结合,而不是怎样做
Java 8: Manipulate String Before Joining
If you are using Stream, it’s really straightforward manipulate your String as you prefer by using map() or cutting some String out by using filter(). I’ll cover those topics in future articles. Meanwhile, this a straightforward example on how to transform the whole String to upper-case before joining.
Java 8: 在连接之前操作字符串
如果你使用流,使用map函数或者用于删掉一些字符串的filter函数能够更加直观的操作字符串。我在将来的文章中会覆盖这些主题。同时,这也是一个直观展示如何将整个字符串在连接之前转为大写的例子。
Java 8: From List to Upper-Case String Comma Separated
将List集合转为大写的用逗号分隔的String
String citiesCommaSeparated = cities.stream()
.map(String::toUpperCase)
.collect(Collectors.joining(","));
//Output: MILAN,LONDON,NEW YORK,SAN FRANCISCO
If you want to find out more about stream, I strongly suggest this cool video from Venkat Subramaniam.
- 1
- 2
- 3
- 4
- 5
Let’s Play
The best way to learn is playing! Copy this class with all the implementations discussed and play with that. There is already a small test for each of them.
让我们尝试一下。最好的学习方式是动手尝试。复制下面讨论的全部实现的类并且运行它。其中对于每一个实现几乎都有一个小的测试。
package net.reversecoding.examples;
import static java.util.stream.Collectors.joining;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.List;
import org.junit.Test;
public class CsvUtil {
private static final String SEPARATOR = ",";
public static String toCsv(List<String> listToConvert){
return String.join(SEPARATOR, listToConvert);
}
@Test
public void toCsv_csvFromListOfString(){
List<String> cities = Arrays.asList(
"Milan", "London", "New York", "San Francisco");
String expected = "Milan,London,New York,San Francisco";
assertEquals(expected, toCsv(cities));
}
public static String toCsvStream(List<String> listToConvert){
return listToConvert.stream()
.collect(joining(SEPARATOR));
}
@Test
public void toCsvStream_csvFromListOfString(){
List<String> cities = Arrays.asList(
"Milan", "London", "New York", "San Francisco");
String expected = "Milan,London,New York,San Francisco";
assertEquals(expected, toCsv(cities));
}
public static String toCsvJava7(List<String> listToConvert){
StringBuilder csvBuilder = new StringBuilder();
for(String s : listToConvert){
csvBuilder.append(s);
csvBuilder.append(SEPARATOR);
}
String csv = csvBuilder.toString();
//Remove last separator
if(csv.endsWith(SEPARATOR)){
csv = csv.substring(0, csv.length() - SEPARATOR.length());
}
return csv;
}
@Test
public void toCsvJava7_csvFromListOfString(){
List<String> cities = Arrays.asList(
"Milan", "London", "New York", "San Francisco");
String expected = "Milan,London,New York,San Francisco";
assertEquals(expected, toCsvJava7(cities));
}
public static String toUpperCaseCsv(List<String> listToConvert){
return listToConvert.stream()
.map(String::toUpperCase)
.collect(joining(SEPARATOR));
}
@Test
public void toUpperCaseCsv_upperCaseCsvFromListOfString(){
List<String> cities = Arrays.asList(
"Milan", "London", "New York", "San Francisco");
String expected = "MILAN,LONDON,NEW YORK,SAN FRANCISCO";
assertEquals(expected, toUpperCaseCsv(cities));
}
}
相关推荐
在Java编程中,将一个`List<Integer>`转换成以逗号分隔的`String`字符串是一种常见的需求,尤其是在处理数据展示或格式化输出时。Java 8引入了新的特性和方法,使得这种转换变得更加简洁和高效。下面我们将深入探讨...
SQL Server 逗号分隔的字符串转换成表是指将一个逗号分隔的字符串转换成一个表结构,以便于进行查询、更新或者删除等操作。下面是将逗号分隔的字符串转换成表的步骤: 1. 创建一个临时表:首先,需要创建一个临时表...
在处理字符串形式的多选参数时,我们通常会先在服务层将这些参数转换为Java集合,如List或Set。例如,如果用户选择的标签以逗号分隔的字符串"tag1,tag2,tag3"传入,我们可以在Java代码中将其分割并存入List。 接...
本篇将详细探讨如何判断一个以逗号分隔的字符串是否包含某个特定的数,并提供一个Java实例作为参考。 首先,我们需要理解字符串的基本操作。在Java中,`String` 类型是不可变的,这意味着一旦创建了一个`String`...
Java 8 中引入的 Stream API 可以将 List 转换为逗号分隔的字符串,示例代码如下: ```java List<String> list = Arrays.asList("apple", "banana", "orange"); String result = list.stream().collect(Collectors....
通过这些方法,我们可以根据实际需求灵活地处理字符串,无论是简单的逗号分隔,还是复杂的正则表达式分割,都能有效地将字符串转换为列表,方便后续的数据处理和分析。在实际开发中,理解并熟练运用这些技巧能够极大...
### AJAX JSON Java 用法:将 List 和 Object 转换为 Json 格式字符串 在现代 Web 开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于创建交互式的 Web 应用程序。其中,JSON(JavaScript Object ...
这将按照`column2`的顺序生成一个带有逗号分隔的字符串。 7. **用户定义的聚合函数 (UDAF)**: 如果内置函数不能满足需求,还可以创建自定义的聚合函数。这需要编写PL/SQL包,包含初始化、累积和最终化步骤。 在...
例如,将逗号分隔的字符串转换为JSON数组,然后使用JSON函数进行操作。这种方法对于处理现代复杂数据结构非常有用。 总结,MySQL提供了多种方式来处理字符串分割,包括`SUBSTRING_INDEX`、`FIND_IN_SET`以及正则...
在VB中,我们通常使用`Split()`函数来分隔字符串。这个函数接受一个字符串作为输入,并根据指定的分隔符将其分割成多个子字符串,返回一个数组。例如,如果你有一个由逗号分隔的字符串`"apple,banana,orange"`,你...
/// 4、GetArrayStr(List list) 得到数组列表以逗号分隔的字符串 /// 5、GetArrayValueStr(Dictionary, int> list)得到数组列表以逗号分隔的字符串 /// 6、DelLastComma(string str)删除最后结尾的一个逗号 /// ...
在C#编程语言中,将分隔符字符串转换为数组是一项常见的操作,特别是在处理用户输入、解析文件数据或处理各种格式的文本时。本篇将深入探讨如何利用C#实现这一功能,以及相关的编程技巧。 首先,让我们了解什么是...
在C#程序开发过程中,很多时候可能需要将字符串根据特定的分割字符分割成字符或者List集合,例如根据逗号将字符串分割为数组,...//根据逗号分隔字符串str 分隔完成之后的得到的数组strArr,取值为 strArr[0]=”A”
如果字符串中包含分隔符(如逗号、空格等),可以使用`Split()`方法来分割字符串,并将结果存储在一个字符串数组中。例如: ```csharp string str = "a,b,c,d"; string[] arr = str.Split(','); // 输出结果:a b ...
它首先使用`split()`方法将原始字符串分割成字符串数组,然后使用`asList()`方法将数组转换为`List<String>`。最后,它通过`toArray()`方法将列表转换回字符串数组。代码通过遍历这些数据结构并打印其内容来验证转换...
字符串可能类似于这样:“id1|pid0|name1|data1,id2|pid1|name2|data2,...”,每个id、pid、name和data之间由特定的分隔符(例如竖线 "|")隔开,而每个数据项之间用逗号分隔。 接下来,我们需要设计一个数据结构来...
Java开发工程师上机笔试题 Java 是一种广泛应用于开发的编程语言,作为一名 Java ...作为一名 Java 开发工程师,需要具备扎实的编程基础和实践经验,包括数组操作、字符串处理、随机数生成和 Java 语言基础等知识点。
- **分割结果**:分割后的结果被存储在一个字符串数组`ArrCarportID`中,每个元素都是原字符串中由逗号分隔的部分。 ### 数组与集合 在程序设计中,数组和集合是用来存储多个同类型数据的容器。题目中使用了数组和...
简单的javascript库,用于转换[逗号|| 空格]分隔字符串到数组。 修剪值,以便您可以使用对人友好的列表,例如'one, two, three' => ['one','two','three'] 如果提供了in array,则将其简单地返回。 如果提供错误或...
- 将提取出的子字符串及其对应的索引号插入到返回的表变量 `@List` 中。 - 使用 `STUFF` 函数删除已处理的部分,即从字符串开头到第一个逗号的位置。 4. **示例调用**: - 调用函数的方式如下所示: ```sql ...