27 Mayıs 2020 Çarşamba

ClassToInstanceMap Arayüzü

Giriş
Bu arayüzü gerçekleştiren ImmutableClassToInstanceMap ve MutableClassToInstanceMap sınıfları var

Kullanım
Bu sınıf temel olarak şöyledir. Yani T tipinin Class'ına denk gelen T nesnesini saklar.
Map<Class<? extends T>, T>
Şöyle kullanmak mümkün değil.
Map<Class<? extends T>, Foo<T>>

10 Mayıs 2020 Pazar

HashBiMap Sınıfı

Giriş
Şu satırı dahil ederiz.
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
Kullanım
Açıklaması şöyle.
Like BidiMap, BiMap also doesn't allow multiple keys referring to the same value. If we try to make such an attempt, it throws a java.lang.IllegalArgumentException.
- Key + Value çiftinin eşşiz (unique) olması gerekir. Bunun haricinde normal map gibi kullanılır. Value değerine göre arama yapmak istenirse inverse().get(...) metodu kullanılır.

- Eğer sychronized bir BiMap istersek Maps.synchronizedBiMap() metodu kullanılır.

create metodu
Örnek
Şöyle yaparız.
BiMap<String, String> biMap = HashBiMap.create();
Örnek
Şöyle yaparız
HashBiMap<String, String> map = HashBiMap.create();
inverse metodu
Şöyle yaparız.
HashBiMap<String, String> capitalCountryMap = HashBiMap.create();

capitalCountryMap.put("Berlin", "Germany");
capitalCountryMap.put("Cape Town", "South Africa");

String capitalOfGermany = capitalCountryMap.inverse().get("Germany");
put metodu
Şöyle yaparız.
BiMap<String, String> biMap = HashBiMap.create();

biMap.put("k1", "v1");
biMap.put("k2", "v2");

System.out.println("k1 = " + biMap.get("k1"));
System.out.println("v2 = " + biMap.inverse().get("v2"));


6 Mayıs 2020 Çarşamba

TreeBasedTable Sınıfı

create metodu
Örnek
Şöyle yaparız
RowSortedTable<String, String, Double> graph = TreeBasedTable.create();
putAll metodu
Şöyle yaparız
// Create sample HashBasedTable
Table<Integer, Integer, String> hashBasedTable = HashBasedTable.create();
hashBasedTable.put(1, 1, "eleven");
hashBasedTable.put(4, 2, "forty two");
hashBasedTable.put(2, 4, "twenty four");
hashBasedTable.put(1, 4, "fourteen");
  // {1={1=eleven, 4=fourteen}, 4={2=forty two}, 2={4=twenty four}}

// Create TreeBasedTable (with natural ordering,
// use `.create(Comparator, Comparator)` otherwise)
TreeBasedTable<Integer, Integer, String> treeBasedTable = TreeBasedTable.create();
treeBasedTable.putAll(hashBasedTable);
System.out.println(treeBasedTable);
  // {1={1=eleven, 4=fourteen}, 2={4=twenty four}, 4={2=forty two}}

5 Mayıs 2020 Salı

Ordering Sınıfı

Giriş
Bu sınıf yerine Java 8 ile gelen Comparator rahatlıkla kullanılabilir.

allEqual metodu
Tüm elemanlar eşit kabul eder.
Örnek
Şöyle yaparız. Tüm elemanları eşit kabul ettiği için true döner.
ArrayList<Integer> arrayList = Arrays.asList(1,3,2);
assertTrue(Ordering.allEqual().reverse().isOrdered(arrayList));
explicit metodu
onResultOf() çağrısının döndürdüğü sonucun, belirtilen listedeki indeksini döndürür.
Örnek
getStatus() sonucu 1 olanlar ilk, 0 olanlar ikinci, 5 olanlar üçüncü sırada olsun istersek şöyle yaparız.
users.sort(Ordering
        .explicit(1, 0, 5)
        .onResultOf(User::getStatus)
        .thenComparing(User::getUsername));
Örnek
Şöyle yaparız. onResultOf() eğer string listede yoksa "OTHERS" döndürür. Onun da konumu 0'dır.
List<String> currencies = ImmutableList.of("OTHERS", "PLN","EUR","USD","GBP", "CHF");
Ordering<String> currencyOrdering = Ordering.explicit(currencies)
.onResultOf(lang -> currencies.contains(lang) ? lang : "OTHERS"); System.out.println(currencyOrdering.compare("JPY", "PLN")); // -1 System.out.println(currencyOrdering.compare("JPY", "TTT")); // 0 System.out.println(currencyOrdering.compare("CHF", "GBP")); // 1
Aslında bu kadar karmaşık yapmak yerine sadece Java kullanarak şöyle yaparız
List<String> currencies = List.of("PLN","EUR","USD","GBP", "CHF");
Comparator<Object> objectComparator = Comparator.comparingInt(currencies::indexOf);
System.out.println(objectComparator.compare("JPY", "PLN")); //-1
System.out.println(objectComparator.compare("JPY", "TTT")); //0
System.out.println(objectComparator.compare("CHF", "GBP")); //1
isOrdered metodu - Iterable
Örnek
Elimizde bir Comparator olsun.
public Comparator<String> getComparator() {
  return new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
      ...
    }
  };
}
Şöyle yaparız
public boolean isOrdered(List<String> list) {
  return Ordering.from(getComparator()).isOrdered(list);
}
natural metodu
Şöyle yaparız. Normal compare() metodu çağrılır. Daha sonra sıralanmış listeden en küçük elemen seçilir.
return Ordering.natural().nullsLast().min(discontinueDate, actualTerminateDate);
sortedCopy metodu
Collections.sort() metodu girdi nesneyi değiştirir. Farklı bir kopya almak için şöyle yaparız.
List<string> sorted = Ordering.natural().sortedCopy(strings);