我有一个对象的arraylist,其中对象中的一个实例变量是string。 我想将对象列表中的字符串变量转换为单个逗号分隔的字符串。
例如,
我有一名对象员工,如下所示。
public class Employee {
private String name;
private int age;
}
考虑员工名单,
List<Employee> empList = new ArrayList<Employee>
Employee emp1 = new Employee ("Emp 1",25);
Employee emp2 = new Employee ("Emp 2",25);
empList.add(emp1);
empList.add(emp2);
预期输出(类型:字符串):
Emp 1,Emp 2
我知道可以通过循环来完成。但我正在寻找一些复杂的方法来实现它并使代码更简单。
答案 0 :(得分:4)
覆盖toString()
类
Employee
方法
public String toString() {
return name;
}
然后,打印清单:
String listToString = empList.toString();
System.out.println(listToString.substring(1, listToString.length() - 1));
这不是复杂的打印方式,但我不涉及使用第三方库。
如果您想使用第三方库,可以通过以下几种方式打印列表。
// Using Guava
String guavaVersion = Joiner.on(", ").join(items);
// Using Commons / Lang
String commonsLangVersion = StringUtils.join(items, ", ");
答案 1 :(得分:0)
我想将对象列表中的字符串变量转换为单个逗号分隔的字符串。
实施您自己的toString()
:
public String toString() { return name; }
在toString()
上调用java.util.List
方法:
empList.toString();
摆脱'['
和']'
:
String s = empList.toString();
s = s.substring(1, s.length()-1);
答案 2 :(得分:0)
如果您想要一种真正干净的方法,请在Java 8中使用函数文字。否则,
在员工类中:
public String toString() { return name; }
打印清单,删除方括号
list.toString().replaceAll("\\[(.*)\\]", "$1");
答案 3 :(得分:0)
没有循环,使用list.toString()
public class Employee {
public Employee(String string, int i) {
this.age=i;
this.name=string;
}
private String name;
private int age;
@Override
public String toString() {
return name + " " + age;
}
public static void main(String[] args) {
List<Employee> empList = new ArrayList<Employee>();
Employee emp1 = new Employee ("Emp 1",25);
Employee emp2 = new Employee ("Emp 2",25);
empList.add(emp1);
empList.add(emp2);
System.out.println(empList.toString().
substring(1,empList.toString().length()-1));
}
}
打印
Emp 1 25, Emp 2 25