S.a. Arkadaşlar,
Artık eskisi kadar maalesef sık yazamıyorum. Klasik nedenlerinden biri iş olsa da bu aralar java değil C# kodluyor olmam. İkisi eklenince eskisi gibi yazamıyorum. Bazen hevesleniyorum ama daha çok programlama diline özgü değil de iyi kodun yazılması ile ilgili şeyler okumak ve öğrenmeye vakit harcıyorum. Onları yazmam için de bilgilerimin daha olgunlaşmasını bekliyorum. Kısa bir girişten sonra konumuza dönelim :)
Map etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Map etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
4 Ocak 2018 Perşembe
23 Ocak 2015 Cuma
Set && Map
S.a. Arkadaşlar,
Bugünkü konumuzda yine koleksiyonlardan devam edeceğiz , fakat bu sefer farklı bir yazıyla devam edeceğiz. Bu sefer de set ve map sınıflarını inceleyeceğiz. Öncelikle Set sınıfımızla başlayalım. Set sınıfımızda hashSet,linkedHashSet ve treeSet lerden bahsedeceğiz. Genel olarak arrayListlerle aynı olsa da bazı yönleriyle farklıdır gösterirler. Mesela aynı 2 eleman eklenemez. Derleyici hata vermez, fakat hafızasına bir adetini alır. treeSette order ve sorted iken diğerleri bu iki özelliği aynı anda taşımaz. Daha önce de zaman zaman açıkladık ordered ve sorted konusunu yine kısaca söylemek gerekirse bir tür sıralamadır int ve String arasında. Bu nedenle TreeSetlerde farklı tipler kullanılamaz. Çünkü String ile int karşılaştıramaz, ama diğer ikisinde ise jenerik ile kısıtlama yapılmadığı sürece kısıtlama yapılabilir. Örnekle söyleyecek olursak
public class TreeSetTest {
public static void main(String[] args) {
LinkedHashSet<Number> linkedHashSet = new LinkedHashSet <Number>();
linkedHashSet.add(2);//normalde aynı elemanı 2 defa bulundurmaz
linkedHashSet.add(2L);//fakat bu değişkenlerin her biri farklı tiptedir
linkedHashSet.add((short)2);
for(Number aaa: linkedHashSet) System.out.println(" " + aaa);
Set treeSet = new TreeSet();
Set<Number> ts1= new TreeSet<Number>() ;
//treeSet.add((short)10);//türü short olduğundan yine hata
treeSet.add(20);
//treeSet.add("ClassCastException");
for(Object aa: treeSet) System.out.println(" " + aa);
}
}
Kısaca Setler böyle , ArrayListle benzerlikleri çok fazla, o yüzden önemli gördüğümüz bir kaç noktayı belirtmiş olduk. Şimdi de maplara geçiyoruz. Map kısmını da 4 başlık altında inceleyeceğiz. Bu üç başlığa geçmeden önce maplerin genel özelliklerinden biraz bahsedelim. 2 kısımdan oluşurlar. 1.si key 2.si value kısmıdır. 1.kısım primer key gibidir. Yani değerleri farklı olmak zorundadır, fakat value değeri birden farklı değerler alabilirler. Eğer key kısmında birden fazla aynı değer varsa en altta olan değer geçerli sayılacaktır. Bunun sebebi override etmesidir. Şimdi de bahsettiğimiz 4 kısmına geçelim. Onlardan da kısaca bahsedip daha sonra da kodla açıklamaya çalışalım.
HashMap: Unordered ve Unsorted. null değerler alabilir. Farklı değişkenler alabilir
Hashtable: null değerler alamaz.
LinkedHashMap:. Null değer alabilir.
TreeMap: Sıralıdır ve ordered. Bu yüzden aynı tip değişken alır
Burada HashMap ve Hashtable HashSet ile benzerlik özellikler gösterse de LinkedHashMap burada biraz daha farklı , bu yüzden biz de ağırlığımızı LinkedHashMap üzerine vermeyi düşünüyoruz.
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
treeMap.put(1, "one");
treeMap.put(2, "two");
treeMap.put(30, "thirty");
treeMap.put(40, "forty");
treeMap.put(50, "fifty");
treeMap.put(70, "seventy");
treeMap.put(100, "hundred");
// ceilingEntry(key) 41den büyük en küçük sayı döndürür
//40 yazsak 40 key/value kısmını seçecekti
Entry<Integer, String> ceilingEntry = treeMap.ceilingEntry(40);
Integer ceilingEntryKey = ceilingEntry.getKey();
String ceilingEntryValue = ceilingEntry.getValue();
System.out.println("ceilingEntryKey: " + ceilingEntryKey);
System.out.println("ceilingEntryValue: " + ceilingEntryValue);
// higherEntry(key) 40den küçük en büyük key/value döndürür
//40 olsa dahi 40ı almaz, dikkat !!
Entry<Integer, String> higherEntry = treeMap.higherEntry(40);
Integer higherEntryKey = higherEntry.getKey();
String higherEntryValue = higherEntry.getValue();
System.out.println("higherEntryKey: " + higherEntryKey);
System.out.println("higherEntryKey: " + higherEntryValue);
// floorEntry(key) kendisinden küçük en büyük sayıyı döndürür
//aynı değer varsa onu seçer
Entry<Integer, String> floorEntry = treeMap.floorEntry(30);
Integer floorEntryKey = floorEntry.getKey();
String floorEntryValue = floorEntry.getValue();
System.out.println("floorEntryKey: " + floorEntryKey);
System.out.println("floorEntryValue: " + floorEntryValue);
// floorEntry(key) kendisinden küçük en büyük sayıyı döndürür
//aynı değer varsa onu seçmez
Entry<Integer, String> lowerEntry = treeMap.lowerEntry(30);
Integer lowerEntryKey = lowerEntry.getKey();
String lowerEntryValue = lowerEntry.getValue();
System.out.println("lowerEntryKey: " + lowerEntryKey);
System.out.println("lowerEntryValue: " + lowerEntryValue);
//ilk değeri döndürür
Entry<Integer, String> firstEntry = treeMap.firstEntry();
Integer firstKey = treeMap.firstKey();
System.out.println("ilk Deger:" + firstKey);
//son değeri döndürrü
Entry<Integer, String> lastEntry = treeMap.lastEntry();
Integer lastKey = treeMap.lastKey();
System.out.println("Son Deger:" + lastKey);
//ilk değeri döndürür ve siler
Entry<Integer, String> pollFirstEntry = treeMap.pollFirstEntry();
//son değeri döndürür ve siler
Entry<Integer, String> pollLastEntry = treeMap.pollLastEntry();
//Mapin son hali. ilk ve son elemanları silinmiş!!
for(Object key: treeMap.keySet()) System.out.println(key);
}
Burada TreeMapin bazı metodlarına baktık , unutmayın bu metodları TreeSet ile de kullanabiliriz. Örnekleri çoğaltıp sizler de kafanıza takılan yerleri cevaplandırabilirsiniz. İyi çalışmalar Kolay gelsin
Bugünkü konumuzda yine koleksiyonlardan devam edeceğiz , fakat bu sefer farklı bir yazıyla devam edeceğiz. Bu sefer de set ve map sınıflarını inceleyeceğiz. Öncelikle Set sınıfımızla başlayalım. Set sınıfımızda hashSet,linkedHashSet ve treeSet lerden bahsedeceğiz. Genel olarak arrayListlerle aynı olsa da bazı yönleriyle farklıdır gösterirler. Mesela aynı 2 eleman eklenemez. Derleyici hata vermez, fakat hafızasına bir adetini alır. treeSette order ve sorted iken diğerleri bu iki özelliği aynı anda taşımaz. Daha önce de zaman zaman açıkladık ordered ve sorted konusunu yine kısaca söylemek gerekirse bir tür sıralamadır int ve String arasında. Bu nedenle TreeSetlerde farklı tipler kullanılamaz. Çünkü String ile int karşılaştıramaz, ama diğer ikisinde ise jenerik ile kısıtlama yapılmadığı sürece kısıtlama yapılabilir. Örnekle söyleyecek olursak
public class TreeSetTest {
public static void main(String[] args) {
LinkedHashSet<Number> linkedHashSet = new LinkedHashSet <Number>();
linkedHashSet.add(2);//normalde aynı elemanı 2 defa bulundurmaz
linkedHashSet.add(2L);//fakat bu değişkenlerin her biri farklı tiptedir
linkedHashSet.add((short)2);
for(Number aaa: linkedHashSet) System.out.println(" " + aaa);
Set treeSet = new TreeSet();
Set<Number> ts1= new TreeSet<Number>() ;
//treeSet.add((short)10);//türü short olduğundan yine hata
treeSet.add(20);
//treeSet.add("ClassCastException");
for(Object aa: treeSet) System.out.println(" " + aa);
}
}
Kısaca Setler böyle , ArrayListle benzerlikleri çok fazla, o yüzden önemli gördüğümüz bir kaç noktayı belirtmiş olduk. Şimdi de maplara geçiyoruz. Map kısmını da 4 başlık altında inceleyeceğiz. Bu üç başlığa geçmeden önce maplerin genel özelliklerinden biraz bahsedelim. 2 kısımdan oluşurlar. 1.si key 2.si value kısmıdır. 1.kısım primer key gibidir. Yani değerleri farklı olmak zorundadır, fakat value değeri birden farklı değerler alabilirler. Eğer key kısmında birden fazla aynı değer varsa en altta olan değer geçerli sayılacaktır. Bunun sebebi override etmesidir. Şimdi de bahsettiğimiz 4 kısmına geçelim. Onlardan da kısaca bahsedip daha sonra da kodla açıklamaya çalışalım.
HashMap: Unordered ve Unsorted. null değerler alabilir. Farklı değişkenler alabilir
Hashtable: null değerler alamaz.
LinkedHashMap:. Null değer alabilir.
TreeMap: Sıralıdır ve ordered. Bu yüzden aynı tip değişken alır
Burada HashMap ve Hashtable HashSet ile benzerlik özellikler gösterse de LinkedHashMap burada biraz daha farklı , bu yüzden biz de ağırlığımızı LinkedHashMap üzerine vermeyi düşünüyoruz.
public static void main(String[] args) {
TreeMap<Integer, String> treeMap = new TreeMap<Integer, String>();
treeMap.put(1, "one");
treeMap.put(2, "two");
treeMap.put(30, "thirty");
treeMap.put(40, "forty");
treeMap.put(50, "fifty");
treeMap.put(70, "seventy");
treeMap.put(100, "hundred");
// ceilingEntry(key) 41den büyük en küçük sayı döndürür
//40 yazsak 40 key/value kısmını seçecekti
Entry<Integer, String> ceilingEntry = treeMap.ceilingEntry(40);
Integer ceilingEntryKey = ceilingEntry.getKey();
String ceilingEntryValue = ceilingEntry.getValue();
System.out.println("ceilingEntryKey: " + ceilingEntryKey);
System.out.println("ceilingEntryValue: " + ceilingEntryValue);
// higherEntry(key) 40den küçük en büyük key/value döndürür
//40 olsa dahi 40ı almaz, dikkat !!
Entry<Integer, String> higherEntry = treeMap.higherEntry(40);
Integer higherEntryKey = higherEntry.getKey();
String higherEntryValue = higherEntry.getValue();
System.out.println("higherEntryKey: " + higherEntryKey);
System.out.println("higherEntryKey: " + higherEntryValue);
// floorEntry(key) kendisinden küçük en büyük sayıyı döndürür
//aynı değer varsa onu seçer
Entry<Integer, String> floorEntry = treeMap.floorEntry(30);
Integer floorEntryKey = floorEntry.getKey();
String floorEntryValue = floorEntry.getValue();
System.out.println("floorEntryKey: " + floorEntryKey);
System.out.println("floorEntryValue: " + floorEntryValue);
// floorEntry(key) kendisinden küçük en büyük sayıyı döndürür
//aynı değer varsa onu seçmez
Entry<Integer, String> lowerEntry = treeMap.lowerEntry(30);
Integer lowerEntryKey = lowerEntry.getKey();
String lowerEntryValue = lowerEntry.getValue();
System.out.println("lowerEntryKey: " + lowerEntryKey);
System.out.println("lowerEntryValue: " + lowerEntryValue);
//ilk değeri döndürür
Entry<Integer, String> firstEntry = treeMap.firstEntry();
Integer firstKey = treeMap.firstKey();
System.out.println("ilk Deger:" + firstKey);
//son değeri döndürrü
Entry<Integer, String> lastEntry = treeMap.lastEntry();
Integer lastKey = treeMap.lastKey();
System.out.println("Son Deger:" + lastKey);
//ilk değeri döndürür ve siler
Entry<Integer, String> pollFirstEntry = treeMap.pollFirstEntry();
//son değeri döndürür ve siler
Entry<Integer, String> pollLastEntry = treeMap.pollLastEntry();
//Mapin son hali. ilk ve son elemanları silinmiş!!
for(Object key: treeMap.keySet()) System.out.println(key);
}
Burada TreeMapin bazı metodlarına baktık , unutmayın bu metodları TreeSet ile de kullanabiliriz. Örnekleri çoğaltıp sizler de kafanıza takılan yerleri cevaplandırabilirsiniz. İyi çalışmalar Kolay gelsin
Etiketler:
Hash Set,
HashMap,
Hashtable,
Lİnked Hash Map,
Linked Hash Set,
Map,
Set,
Tree Map,
Tree Set
7 Aralık 2014 Pazar
Collections
S.a. Arkadaşlar,
Bu makalemizde sizlerle birlikte hem collections topluluğunu hem tanıyıp hem de tanıtmaya çalışacağımız. Varsa eksiklerimiz şimdiden affola.
Bu makalemizde sizlerle birlikte hem collections topluluğunu hem tanıyıp hem de tanıtmaya çalışacağımız. Varsa eksiklerimiz şimdiden affola.
Öncelikle collections nedir , ne
işe yarar , neden kullanılır onun üzerinde biraz konuşacağız daha sonra
ayrıntılı olarak üzerinde durmaya gayret edeceğiz. Biz bazı işlemlerimizi
yaparken önce for kullanırız , for kullanımından daha güzel şekilde
değerlendirerek dizilerle işlem yapmaya başladık fakat dizilerden daha gelişmiş
olan collections ile işlem yapmak hem daha kolay hem daha fazla özellikler
barındırır. Bunlardan bazıları ise veri eklerken static durumdan kurtulmak ,
araya eleman eklemek , aradan eleman silmek vb özelliklerini dizilerle yapmak
çok zor ve karışık iken collections ile çok rahat olabiliyor.
Resim-1
Java Collections [1]
Set: Birden fazla aynı kayıt
içeremez. Tekildir. Belirli bir sıralaması yoktur.
Sorted
Set: Eğer sıralı bir set oluşturacaksak bu yöntem kullanırız.
HashSet:
Burada ise düzensiz ama hızlı bir erişim vardır.
List: Birden fazla aynı kayıt
içerebilir. Belirli bir sıralaması vardır.
Array
List: Sıralı listelerde hızlı erişim sağlar.
Linked
List: Farklı bir liste yöntemi kullanır.
Map: Her öğresine anahtar atanan
topluluktur. Tekildir.
Hash
Map: Sıralaması yoktur, sorted map’e
göre daha hızlıdır.
Sorted
Map: Anahtarına göre sıralanmış kümedir(map).
Kaynakça
[1] Timur Karaçay, Veri Yapıları
Etiketler:
Array List,
Collections,
Java,
List,
Map,
programming,
Set
Kaydol:
Kayıtlar (Atom)