-Sınırlandırmak virgülle ayrılmış listesi (Java) yolu açık mı?
Virgülle sınırlandırmak Java listesi en net yolu nedir?
Bunu yapmanın bir sürü yolu biliyorum, ama en iyi yolu nedir merak ediyorum ("nerede" anlamına gelir ve/veya en kısa en net, en verimli değil. en iyi
Bir listem var ve her şey bitecek, her değer yazdırma döngü istiyorum. En son (veya ilk önce) sonra her madde arasında, ancak bir virgül yazdırmak istiyorum.
List --> Item ( , Item ) *
List --> ( Item , ) * Item
Örnek çözüm 1:
boolean isFirst = true;
for (Item i : list) {
if (isFirst) {
System.out.print(i); // no comma
isFirst = false;
} else {
System.out.print(", " i); // comma
}
}
Örnek çözüm 2 - bir alt liste oluşturmak:
if (list.size()>0) {
System.out.print(list.get(0)); // no comma
List theRest = list.subList(1, list.size());
for (Item i : theRest) {
System.out.print(", " i); // comma
}
}
Örnek Çözüm 3:
Iterator<Item> i = list.iterator();
if (i.hasNext()) {
System.out.print(i.next());
while (i.hasNext())
System.out.print(", " i.next());
}
Bu özellikle ilk madde tedavisi; en son özel bir tedavi olabilir yerine.
Bu arada, burada olabilirdi Listesiuygulanan (AbstractCollection miras), Java 1.6:
public String toString() {
Iterator<E> i = iterator();
if (! i.hasNext())
return "[]";
StringBuilder sb = new StringBuilder();
sb.append('[');
for (;;) {
E e = i.next();
sb.append(e == this ? "(this Collection)" : e);
if (! i.hasNext())
return sb.append(']').toString();
sb.append(", ");
}
}
Bu son öğeden sonra virgül önlemek için erken döngü çıkar. BTW: bu gördüğümü hatırlıyorum ilk kez "(bu Toplama)"; burada kışkırtmak için kod:
List l = new LinkedList();
l.add(l);
System.out.println(l);
Eğer beklenmedik kütüphaneler (regexp?) kullanması halinde bile herhangi bir çözüm hoş geldiniz diyorum,; ve ayrıca dil Java dışındaki çözümleri (Python/Ruby düşünüyorum örneğinserpmekişlev nasılbuuygulanan?).
Açıklama: kitaplıklar, standart Java kütüphanelerini yani. Diğer kütüphaneler için, onları diğer dillerde ve hayata nasıl aldıklarını merak olarak görüyorum.
EDİTaraç benzer bir soru sözü: Last iteration of for loop in java
Ve başka bir: Does the last element in a loop deserve a separate treatment?
CEVAP
org.apache.commons.lang.StringUtils.join(list,",");
IList virgülle ayrılmış listesi oluştu...
Java: bölme virgülle ayrılmış bir dize...
MySQL virgülle ayrılmış listesi Sonuçl...
CamelCase (hiçbir sözcük ayırıcı) tümü...
Nasıl cari açık pencere listesi/Java i...