-2

I have the list of strings

List<String> lst;

I need to transform that list into a string as follows:

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

The String I want to get is:

"String 1 + String 2 + String 3"

If

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

then I just want String 1

If lst.isEmpty() then I want "".

Is it possible to do that in a flexible way and avoid writing multiple if-else if?

UPD: I'm on Java 7

St.Antario
  • 24,791
  • 31
  • 112
  • 278

2 Answers2

2

Assuming that you only want to use native Java (and don't want to use a third-party library like Apache), and desire 1.7, I don't really see a way around a simple for loop with an easy condition.

I'm not sure if this is "multiple if-else-if, but this seems fairly straight-forward:

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

Hope this helps.

Ori Lentz
  • 3,670
  • 6
  • 21
  • 28
2

Will it do ?

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());
}
Soumitri Pattnaik
  • 2,857
  • 4
  • 22
  • 39