JAVA:将List转换为逗号分隔的字符串的教程

1,763 阅读2分钟

在这篇博文中,如何用逗号分隔的字符串转换列表。这包括以下例子

  • 将自定义对象的列表转换为逗号分隔的字符串
  • 将字符串/长条/整数的列表转换为逗号分隔的字符串。

如何将自定义对象列表转换为逗号分隔的字符串

有多种方法可以将对象列表转换为逗号分隔的字符串。

这里的对象可以是java类的自定义对象。

例如,用户对象被声明为具有以下成员属性:

package com.company;

public class User {
    private Integer id;
    private String name;

    public User(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

让我们为这个例子插入数据

        List users = new ArrayList();
        User user1 = new User (1,"Eric");

        User user2 = new User (2,"John");
        User user3 = new User (3,"Ram");

        users.add(user1);
        users.add(user2);
        users.add(user3);

使用for循环

for each 循环被用来遍历列表。

以下是步骤的顺序

  • 创建一个字符串生成器对象
  • 使用forEach循环来迭代每个对象
  • 添加对象名称和逗号分隔符
  • 使用toString()方法将StringBuilder转换为字符串
  • 由于我们在最后一个字符串中添加了一个逗号
  • 使用substring 方法删除最后的逗号

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        List users = new ArrayList();
        User user1 = new User (1,"Eric");

        User user2 = new User (2,"John");
        User user3 = new User (3,"Ram");

        users.add(user1);
        users.add(user2);
        users.add(user3);
        StringBuilder sb = new StringBuilder();

        for(User user:users){
            sb.append(user.getName()).append(",");
        }
        String commaDelimeterString=sb.toString();
        if( commaDelimeterString.length() > 0 )
            commaDelimeterString = commaDelimeterString.substring(0, commaDelimeterString.length() - 1);


        System.out.println(commaDelimeterString);

    }
}

使用java8流

java8引入了流来操作对象的列表或数组。

你可以查看以下java8流的教程

以下是一系列的步骤

  • 使用stream()方法调用列表对象流
  • 使用map方法和lambda表达式对每个对象进行迭代
  • 在lambda表达式中获取对象的电子邮件
  • java.util.stream.Collectors 连接方法使用逗号分隔符,并使用还原器返回逗号分隔符的字符串。collect

下面是一个完整的例子

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        List users = new ArrayList();
        User user1 = new User (1,"Eric");
        User user2 = new User (2,"John");
        User user3 = new User (3,"Ram");

        users.add(user1);
        users.add(user2);
        users.add(user3);
        String nameSeparatedString = users.stream().map(user->user.getName())
                .collect(Collectors.joining(","));
        System.out.println(nameSeparatedString);

    }
}

输出:

Eric,John, Ram

将字符串列表转换成逗号分隔的字符串

在本教程中,我们将看到如何将StringInteger**、Long**的原始列表转换为分隔的字符串。

apache commons StringUtils join方法

这是将字符串列表转换为逗号分隔字符串的简单易行的方法。

如果你在你的应用程序中使用apache commons库,你可以使用**StringUtils join()**方法。

同样的方法在apache commons lang模块中也有,即org.apache.commons.lang3.StringUtils

import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.StringUtils;

public class Main {

    public static void main(String[] args) {
        List strList = new ArrayList<>();
        strList.add("one");
        strList.add("two");
        strList.add("three");
        strList.add("four");
        String delimetedCommaString=StringUtils.join(strList, ',');
        System.out.println(delimetedCommaString);
    }
}

输出

one,two,three,four

Spring框架将整数列表转换成逗号分隔的字符串

Spring框架在org.springframework.util包中提供了StringUtils类。

这个类有arrayToDelimitedString 方法

以下是该方法的语法

public static String arrayToDelimitedString(@Nullable
                                            Object[] arr,
                                            String delim)

下面是一个将整数列表转换为逗号分隔字符串的例子 代码

import java.util.ArrayList;
import java.util.List;
import org.springframework.util.StringUtils;

public class Main {

    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add(1);
        list.add(12);
        list.add(14);
        list.add(50);
        String delimetedCommaString=arrayToDelimitedString(list, ',');
        System.out.println(delimetedCommaString);
    }
}