2010-10-26 12 views
60

Listenin verilerini, tüm öğeleri sağlanan sınırlayıcıyla birleştirilen bir dizi olarak döndüren birleştirme var mı?Tek adımda bir sınırlayıcıyla Dize listesi öğelerine katılın

List<String> join; .... 
String join = list.join('+"); 
// join == "Elem 1+Elem 2"; 

ya da bir el ile elemanlarının tutkal için bir yineleme kullanmalıdır?

String join = StringUtils.join(joinList, "+"); 

cevap

76

Apache Commons Lang StringUtils.join() yöntemi kullanabilirsiniz.

Joiner joiner = Joiner.on("+"); 
String join = joiner.join(joinList); 
+0

Elbette, bunun için bir üçüncü taraf kitaplığı kullanmak istemiyorsanız, bir yardımcı program sınıfı oluşturmak da gerçekten kolaydır. Fakat 'Apache Commons Lang', 'null' değerlerine dikkat eden birçok kullanışlı yöntem sunar ... – romaintaz

89

Java 8 ...

String joined = String.join("+", list); 

Dokümantasyon: Sadece elemanların listesini log istiyorsanız http://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.Iterable-

+1

Sadly 'String.join()' Guava'nın "Joiner.join" ün aksine, sadece "Yinelenen " (varargs dışında) kabul eder() 'Yinelenen ', 'Iterator ', varargs, ... –

+3

Doğru - String.join(), rasgele türleri işlemez. Yinelenen bir CharSequence, yani List Listesini bekler. İsteğe bağlı türleri sınırlamak isterseniz, String değerini çıkarmanız ve sınırlandırılmış listeyi oluşturmanız gerekir. Ayrıca Java 8'de bir liner: 'String birleştirildi = iterableOfNonCharSequence.stream(). Map (object -> object.methodToGetStringValue()) topla (Collectors.joining (", "));' – gahrae

+0

StringJoiner ayrıca İçeriği birleştirmek için yararlı bir sınıf. İşte StringJoiner ve Collectors.joining gösteren bir örnek program ... http://pastebin.com/i2YwJcZy# – gahrae

2

, zaten bütün birleştirir liste toString() yöntemini kullanabilirsiniz liste elemanları.

2

Yay kullanıyorsanız, önek ve sonek belirtmenize de olanak sağlayan StringUtils.join() yöntemini kullanabilirsiniz.

String s = StringUtils.collectionToDelimitedString(fieldRoles.keySet(), 
       "\n", "<value>", "</value>"); 
+0

Bu aslında kopyalanabilir ve tek bir yöntemdir: https: //gist.github com/Zhuinden/5d88caee5e184e2b6d5ced329618f086 – EpicPandaForce

3

Şunları kullanabilirsiniz: org.springframework.util.StringUtils;

String stringDelimitedByComma = StringUtils.collectionToCommaDelimitedString(myList);