Java8 lambda & prediction

Java8 lambda and prediction examples,

To filter a list of elements we can use previous version of java as follows..

color picker ..
public static List filterApple(List apples, String color) {
  List list = new ArrayList<>();
  for (int i = 0; i < apples.size(); i++) {
     if (color.equals(apples.get(i).getColor())){
         list.add(apples.get(i));
      }
    }
    return list;
 }

weight picker..
public static List filterApple(List apples, int weight) {
   List list = new ArrayList<>();
   for (int i = 0; i < apples.size(); i++) {
     if (weight == apples.get(i).getWeight())){
        list.add(apples.get(i));
      }
   }
   return list;
 }

Instead of this. we can use prediction for simpler and for more different filter options.

For example consider this example..

 public static List<Apple> filterApple(List<Apple> apples, ApplePredicate p) {
   List<Apple> list = new ArrayList<>();
   for (int i = 0; i < apples.size(); i++) {
      if (p.test(apples.get(i))) {
         list.add(apples.get(i));
      }
    }
    return list;
 }

A prediction type to be passed as an argument to the filter method so that what kind of filter options is that we can still use it in a single method instead of multiplying the same code over and over again..

In addition to this we can use prediction list to pass as and argument as well and so that if we can use this list to filter object with more details. Such as an apple  , red , green, heavy, light.

 

 List<ApplePredicate> predicates = new ArrayList<>();
 predicates.add(new ApplePredicateGreen());
 predicates.add(new ApplePredicateHeavy());
 
 System.out.println("heavy and green with a list of predicates");
 List<Apple> heavyAndGreenList = filterApple(apples, predicates);
 System.out.println(heavyAndGreenList); 

public static List<Apple> filterApple(List<Apple> apples, List<ApplePredicate> predicates) {
   List<Apple> list = new ArrayList<>();
   for (int i = 0; i < apples.size(); i++) {
     boolean found = true;
     for(ApplePredicate p: predicates){
       if (! p.test(apples.get(i))) {
         found = false;
         break;
       }
     }
     if(found){
       list.add(apples.get(i));
     }
   }
   return list;
 }

 

#Note

appcelerator titanium

Titanium Appcelerator firması tarafından çıkarılmış bir karma IDE(integrated development enviroment)’dir.
Bu platformda yapılan kodlmalar javaScript HTML’le yapılıyor kodlar IDE tarafından native java(android için) ve objective-c (iphone,ipad,ipod için) kodlarına dönüştürür.Bu yönden bakılınca gelecekte sıkça rastlayacağımız bir teknoloji ama şu an itibariyle kullanımı zor ve hakkında yeterli bilgiye erişmek istenildigi kadar kolay olmuyor. Titanium Mac OSX’le uyumlu oldugu için windows ta VB’dan başka dogru düzgün çalışılacak bir ortam yok, zaten VB’de de iyi performans verecegini sanmıyorum çünkü normalde android ve iphone Emulatörleri yavaş çalışıyor birde bu ortamda iyice işkence olur en iyisi MacBook yada MacOSx yüklü bir makina lazım.

Android

 

Android’e başlarken umarım umduğumuz gibi bir dönem olur.Yeni başlayanlar için(e.g. benim gibi):  iyi sayılabilecek birkaç kaynak, okuyunca yepyeni şeyler öğrenebilirsiniz e.g  “kim korkar linuxtan” bedava dagıtıma sahip ona istediginiz gibi ulaşabilirsiniz bir de yol haritası koydum bolca bakın 🙂 . Android geliştirme kısmı tamamen java üstünü diyebilirim ve linux(ubuntu) gayet rahat bir ortam sağlıyor SDK’ları android.com dan indirip yükleyin ve çalışmaya hazır. Kolay gelsin. Aşağıdaki kitabı da bulursanız okumaya çalışınız. Android.Application.Development.for.For.Dummies