2015-05-20 3 views
-2

У меня есть список строкКак преобразовать список в строку?

List<String> lst; 

Мне нужно преобразовать этот список в строку следующим образом:

List<String> lst = new ArrayList<String>(); 
lst.add("String 1"); 
lst.add("String 2"); 
lst.add("String 3"); 

Строка Я хочу, чтобы это:

"String 1 + String 2 + String 3" 

Если

List<String> lst = new ArrayList<String>(); 
lst.add("String 1"); 

тогда я просто хочу String 1

Если lst.isEmpty(), то я хочу "".

Возможно ли это сделать гибким способом и не писать несколько if-else if?

UPD: Я на Java 7

+2

['Joiner'] (http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/base/Joiner.html) или переключиться на Java 8, есть много вариантов. – Maroun

+1

Разве мы не решили это на SO уже? –

+0

@MarounMaroun Что могло бы быть возможным решением в Java 8? –

ответ

2

Предполагая, что вы хотите использовать только родной Java (и не хотите использовать сторонние библиотеки, как Apache), и желание 1.7, я на самом деле не видят пути вокруг простого цикла с легким условием.

Я не уверен, если это «несколько if-else-if, но это, кажется, довольно прямо вперед:.

List<String> lst = new ArrayList<String>(); 
lst.add("String 1"); 
lst.add("String 2"); 
lst.add("String 3"); 

StringBuilder output = new StringBuilder(); 
int size = lst.size(); 
for (int i = 0; i < size; i++) { 
    output.append(lst.get(i)); 
    if (i < size - 1) 
     output.append(" + "); 
} 

System.out.println(output.toString()); 

Надеется, что это помогает

+2

Лучше использовать ['StringBuilder'] (https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html) вместо оператора' + '. Вы заметите разницу, когда ваш список станет больше. – Maroun

+0

Я согласен с @MarounMaroun. –

+0

Да, ты прав. Спасибо :) Я отредактировал свой ответ, чтобы использовать 'StringBuilder' –

2

Будет ли это сделать

public static void main(String[] args) { 

    ArrayList<String> list = new ArrayList<String>(); 
    list.add("String 1"); 
    list.add("String 2"); 
    list.add("String 3"); 

    StringBuilder convert = new StringBuilder(); 
    convert.append(list.isEmpty() ? "" : list.get(0)); 

    for(int i = 1 ; i < list.size() ; i ++) { 
     convert.append(" + ").append(list.get(i))); 
    } 

    System.out.println(convert.toString()); 
} 
?
+1

Снова посоветуйте ['StringBuilder'] (https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html) вместо' + '. – Maroun

+0

'convert.append (" + "+ list.get (i))' this + также должен быть заменен функциями StringBuilder. И '&& list.size()> = 1' не нужно. – findusl

+0

@findusl picky man: P, проверьте редактирование. Благодаря :) –

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