SORU
21 Mart 2009, CUMARTESİ


-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
21 Mart 2009, CUMARTESİ


org.apache.commons.lang.StringUtils.join(list,",");

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • André Frizzo

    André Frizz

    16 Aralık 2006
  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • Hollyscoop

    Hollyscoop

    30 Ocak 2007