Varım o halde yazıyorum…

Java’da listeleri generic olarak gruplamak

Ekim 7th 2011 Java, Java Teknolojileri

Kod yazarken bir listenin elemanlarını belirli bir alana göre gruplamak sıkça yapılan işlerden biridir. Personelleri işe giriş tarihine göre veya arabaları modelinin tipine göre gruplamak gibi. Gruplanan bu veriler de genel olarak Map türü bir veri yapısında tutulur. Bu işi genel(generic) olarak yapabilen ve gruplamaya kriter olan alanın seçiminde aşağı doğru dallanabilen bir metot kod tekrarını oldukça azaltması açısından faydalı olabilir. Sırf ben biliyorum çalıştığım projede bu işi kaç kere yaptığımı : )

Bu kodu kullanabilmek için classpath’e commons-beanutils.jar ve commons-logging.jar’ı eklemek gerekiyor.

Ayrıca eclipse projesi şuradan indirilip incelenebilir, import edilebilir.

public static <E, T> Map<E, List<T>> group(List<T> listToGroup, String groupingCriteria) {

Map<E, List<T>> grupMap = new HashMap<E, List<T>>();
for (T item : listToGroup) {
try {
E e = (E) BeanUtils.getProperty(item, groupingCriteria);
if (grupMap.containsKey(e)) {
grupMap.get(e).add(item);
} else {
List<T> list = new ArrayList<T>();
list.add(item);
grupMap.put(e, list);
}
} catch (IllegalAccessException exception) {
throw new RuntimeException(“Error in grouping !” + exception.getMessage());
} catch (InvocationTargetException exception) {
throw new RuntimeException(“Error in grouping !” + exception.getMessage());
} catch (NoSuchMethodException exception) {
throw new RuntimeException(“Error in grouping !” + exception.getMessage());
}

}
return grupMap;

}

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail



gerekli



gerekli - yayımlanmayacak


Yorum Yap & Fikrini Paylaş

İlk izlediğimden beri tekrar izlemekti aklımdaki. Şöyle serinin üç filmini arka arkaya. Nihayet yapabildim. Aklımda tam olarak ihtişam kelimesi ile eşlemiştim “Yüzüklerin Efendisi” serisini. Biraz “Indiana Jones” serisini macera ile, “Geleceğe Dönüş” serisini hayal kelimesi eşlemiş olmam gibi. Tolkien’in hayal gücüne, nasıl olup da bu kadar farklı varlığı, nesneyi, miti kafasında oluşturabilip, bütünleyebildiğine ve tabi […]

Önceki Yazılar

Eclipse’in bir güzel özelliği de sık kullanılan kimi kod blokları, şablonları için kısayol oluşturabiliyor olmak. Tıpkı “syso” yazıp Ctrl+Space yapınca “System.out.println();” satırını veya “main” yazıp sınıfa bir main metodu eklemek gibi.

Bunun için yapılması gereken Window->Preferences->Java->Editor->Templates kısmından yeni bir şablon eklemek. Mesela ben debug yaparken işlemi yarıda kesmek istediğim zaman kullandığım kod bloğu olan throw new […]

Sonraki Yazılar

Sharing
Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail