zamiana listy na stringa

0

Witam, mogłoby się wydawać że temat banalny ale jednak...

dostaje sobie taki o to List<integer> result który daje mi id, i chce to spreparować na stringa po przecinkach (każdy id oddzielony przecinkami). na tą chwilę robię to tak :

  private String prepareJoinedItemIdsForProcedure(List<Integer> result) {
        String idList = "";
        for (Integer s : result ){
            idList += s + ",";

        }
        return idList;
    }

Aczkolwiek powoduje to że nawet jeśli mam podanego jednego id, to na końcu dodaje mi ",". Chciałbym to tak zmienić by na końcu string-a nie było przecinka

4
return result.stream()
          .map(String::valueOf)
          .collect(Collectors.joining(","));
0

Wymyśliłem jeszcze to :


 private String prepareJoinedItemIdsForProcedure(List<Integer> result) {
        String idList = "";
        for (Integer s : result ){
            if (StringUtils.isNotBlank(idList)) {
                idList += ",";
            }
            idList += s;
        }
        return idList;
    }
0

To nie jest nic skomplikowanego. na początku jest textarea w której wprowadzamy po przecinku identyfikatory, potem tworzona jest lista Integer z separatorem ",". Potem wyrzucane są z tej listy wszystkie nieprawidłowe wpisy np te33kst(zabezpieczenie, by poprzez textarea nie móc wprowadzić na przykład zapytania sql: update, insert, delete) ... itp i pozostawione tylko prawidłowe ID. Potem w pętli przekazuje pojedynczy Id z listy do metody zmieniającej (JPAQuery) datę premiery i do metody zmieniającej status Id-ka, tam Lista<Integer> tych id-ków, preparowana jest jeszcze raz na stringa ( patrz post wyżej ) i dalej parsowane jest to w procedurze sql.

0

@Altaro
Jeżeli chcesz sklejać więcej niz 3-4 stringi, to stosuj StringBuilder. Sama klasa String jest Immutable i sklejanie ich poprzez + jest niewydajne. Jest to do zaakceptowania w prostym sklejeniu, ale w przypadku większej liczby wartości, warto użyć albo wspomnianego StringBuilder, albo jeszcze lepie, gotowych rozwiązań takich jak String.join(), StringJoiner, czy przedstawiony wyżej odpowiedni collector.

0

Przede wszystkim prosiłbym żebyście się tak nie kłócili ;) A co do mojego rozwiązania, uważam za wystarczające, ponieważ nie będzie w nim sklejanych więcej niż~50 stringów z listy. Najczęściej będzie to pojedynczy string lub kilka. Nie będzie to też częścią jakiegoś schedulera czy innego procesu. Będzie to wsadowa zmiana wywoływana przez użytkownika portalu.

0

A czemu nie w scali:

result.mkString(",")
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1