2013-09-11 7 views
1

У меня есть объект массива объектов, где одна из переменных экземпляра объекта является строкой. Я хотел бы преобразовать строковые переменные в список объектов в одну строку, разделенную запятыми.Преобразование строки в список объектов, разделенных запятыми

Например,

У меня работника объекта, как показано ниже.

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); 

Ожидаемый результат (Тип: String):

Emp 1,Emp 2 

Я знаю, что это может быть сделано через зацикливание. Но я ищу некоторые сложные способы сделать это и упростить код.

+1

Выполнение цикла. Нет волшебной функции «сделай то, что я думаю, что хочу, чтобы ты сделал» ... – ppeterka

+3

Утонченный способ будет содержать петлю в ней где-то. –

+0

Спрячьте свою петлю за функцией – YMomb

ответ

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, ", "); 
+0

... и есть петля. OP хочет этого без этого. (хотя это невозможно ...) – ppeterka

+2

Комментарий OCD: у вас будет дополнительный '' '. –

+0

Исправлено. Теперь это должно быть хорошо, хотя подход не мой любимый. –

0

Я хотел бы преобразовать строковые переменные в списке объектов в единый строке разделенной запятыми.

  • реализовать свой собственный toString():

    public String toString() { return name; } 
    
  • метод toString() вызова на java.util.List:

    empList.toString(); 
    
  • избавиться от '[' и ']':

    String s = empList.toString(); 
    s = s.substring(1, s.length()-1); 
    
+0

Это добавит пух, как квадратные скобки вокруг выхода, и может измениться (хотя это маловероятно) – ppeterka

+0

@PatriciaShanahan это правда. Но он все еще связывает весь материал с одной реализацией List.toString(). Код, который нельзя использовать повторно, не является хорошим кодом. – ppeterka

0

Если вы хотите реальный чистый способ сделать это, используйте функцию литералы в Java 8.В противном случае,

В классе Employee:

public String toString() { return name; }

печати из списка, удаление квадратные скобки

list.toString().replaceAll("\\[(.*)\\]", "$1");

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 
+0

Он не хотел возраст btw ... –

+0

@JonathanDrapeau Это макет кода, OP может удалить/добавить в соответствии с его требованиями :) –

Смежные вопросы