30 Ekim 2018 Salı

TreeRangeSet Sınıfı

Giriş
- Bu sınıf TreeRangeMap sınıfı ile kardeştir.
- Bu sınıf Guava 14 ile geliyor. Eğer daha eski bir sürüm kullanıyorsak benzer işlevi yapan bir sınıf burada

add metodu
Örnek
Şöyle yaparız.
RangeSet<Integer> rangeSet = TreeRangeSet.create();
rangeSet.add(Range.closed(1, 10)); // {[1, 10]}
Örnek
Eğer birleşmesini istiyorsak şöyle yaparız.
rangeSet.add(Range.closed(1, 10).canonical(DiscreteDomain.integers()); 
// {[1, 11)}
rangeSet.add(Range.closed(11, 20).canonical(DiscreteDomain.integers());
// {[1, 21)}
asRanges metodu
Şöyle yaparız.
TreeRangeSet<Long> rangeSet = ...
Set<Range<Long>> ranges = rangeSet.asRanges();
contains metodu
Örnek ver

create metodu
Şöyle yaparız.
RangeSet<Integer> rangeSet = TreeRangeSet.create();

ListeningExecutorService Sınıfı

Giriş
Şu satırı dahil ederiz. İş bitince bir callback çağrılmasına imkan tanır. Bu sınıf yerine Java 8 ile gelen CompletableFuture kullanılabilir.
import com.google.common.util.concurrent.ListeningExecutorService;
ListenableFuture Ne Zaman Çalışır
Açıklaması şöyle. Yani hemen çalışmaz
There isn't a separate thread busy waiting. All instances of ListenableFuture returned by Guava or the ListeningExecutorService that it provides are subclasses of AbstractFuture and call set ()when they have a result. set() itself calls a method called complete(), which submits the listeners on the ListenableFuture to their associated Executor.

That said, there's no guarantee that the Executor attached to the listener will run the listener job immediately. That's up to you to make sure of, or if you want it to run synchronously and your listener is fast and you're okay blocking on it, you can use MoreExecutors.directExecutor().
constructor
Şöyle yaparız.
ListeningExecutorService service = MoreExecutors.listeningDecorator(
  Executors.newFixedThreadPool(1));
submit metodu
Örnek
Şöyle yaparız.
ListenableFuture<String> futureMatch = executorSvc.submit(() -> ...);
Örnek
Şöyle yaparız.
Callable<Integer> task = () -> {
    // ... return an int somehow ...
};

ListeningExecutorService service = ...;
ExecutorService executorService = Executors.newSingleThreadExecutor(...);

service.submit(task).addListener(() -> {
  /// ... do something with the result ...
}, executorService);

ImmutableRangeMap.Builder Sınıfı

build metodu
Şöyle yaparız.
ImmutableRangeMap<Long, String> metrics= new ImmutableRangeMap.Builder<Long, String>()
  .put(Range.closed(MIN_VALUE1, MAX_VALUE1), "Metric1")
  .put(Range.closed(MIN_VALUE2, MAX_VALUE2), "Metric2")
  .put(Range.closed(MIN_VALUE3, MAX_VALUE3), "Metric3")
  .build();

TreeRangeMap Sınıfı

Giriş
TreeRangeSet sınıfı ile kardeştir.

create metodu
Şöyle yaparız.
RangeMap<Long, String> salesRangeMap = TreeRangeMap.create();
get metodu
Şöyle yaparız.
long theKey = ...;
String metricFromMap = salesRangeMap.get(theKey);
put metodu
Şöyle yaparız.
salesRangeMap.put(Range.closed(1540038517L, 1540645753L), "Metric1");