SORU
15 EYLÜL 2008, PAZARTESİ


'ayrılmış öğeleri bir dizi oluşturmak için en iyi yol bu Java?

Bir Java uygulaması çalışırken, geçenlerde değerleri virgülle ayrılmış listesi kaç önceden olacağını bilmeden başka bir web hizmetine aktarmak için bir araya ihtiyacı vardı. Kafamın üst kapalı bulabildiğim en iyisi bu gibi bir şey oldu:

public String appendWithDelimiter( String original, String addition, String delimiter ) {
    if ( original.equals( "" ) ) {
        return addition;
    } else {
        return original   delimiter   addition;
    }
}

String parameterString = "";
if ( condition ) parameterString = appendWithDelimiter( parameterString, "elementName", "," );
if ( anotherCondition ) parameterString = appendWithDelimiter( parameterString, "anotherElementName", "," );

Bu dizeleri her yerde oluşturulan olduğundan özellikle verimli değil, farkındayım, ama netlik optimizasyonu daha gidiyordum.

Ruby, çok daha zarif hissediyor böyle bir şey yerine yapabilirim:

parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");

Ama bir Java komut katılın bulunmadığı için, eşdeğer bir şey anlayamadım.

Java ile bunu yapmak için en iyi yolu nedir?

CEVAP
15 EYLÜL 2008, PAZARTESİ


Java 8 Öncesi:

Apache commons lang arkadaşın buraya bir bakın bir yöntem çok benzer katılın Ruby sağlar

StringUtils.join(java.lang.Iterable,char)


Java 8:

Java 8 kutu katılma StringJoiner String.join()) sağlar. Parçacıkları aşağıda bunları nasıl kullanabileceğinizi gösterir:

StringJoiner

StringJoiner joiner = new StringJoiner(",");
joiner.add("01").add("02").add("03");
String joinedString = joiner.toString(); // "01,02,03"

String.join(CharSequence delimiter, CharSequence... elements))

String joinedString = String.join(" - ", "04", "05", "06"); // "04 - 05 - 06"

String.join(CharSequence delimiter, Iterable<? extends CharSequence> elements)

List<String> strings = new LinkedList<>();
strings.add("Java");strings.add("is");
strings.add("cool");
String message = String.join(" ", strings);
//message returned is: "Java is cool"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • Eric Magidson

    Eric Magidso

    4 Ocak 2009
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008