CodeGym /Blog Jawa /Acak /Ukara Jawa kanthi Tuladha
John Squirrels
tingkat
San Francisco

Ukara Jawa kanthi Tuladha

Diterbitake ing grup
Umume predikat tegese pratelan sing nemtokake manawa nilai bisa bener utawa salah. Ing pemrograman predikat tegese fungsi karo siji argumen sing ngasilake nilai boolean. Predikat Antarmuka Fungsional diwujudake ing basa Jawa 8. “Fungsional” tegese mung ngemot siji metode abstrak. Iki nampa argumentasi lan ngasilake boolean. Ing Jawa, antarmuka fungsional digunakake kanggo nangani ekspresi Lambda, konstruktor, lan referensi Metode. Biasane Java 8 Predikat digunakake kanggo aplikasi filter kanggo koleksi obyek. Ayo goleki aplikasi utama lan metode sing akeh digunakake, uga ngrampungake sawetara masalah praktik. Ukara Jawa kanthi Tuladha - 1

Napa Pangembang Gunakake Predikat

Sejatine, pangembang bisa nggunakake predikat kanggo tugas apa wae sing kalebu ngevaluasi item adhedhasar kriteria sing wis ditemtokake lan ngasilake nilai boolean. Ing ngisor iki conto tugas prasaja sing ditangani pangembang nggunakake predikat:
  • Nyaring sakumpulan integer.
  • Ngurutake dhaptar kanthi mesthekake yen data kasebut tundhuk karo sawetara kahanan sing wis ditemtokake (contone, ngatur sawetara item kanthi nyetel rega lan kondisi bobot).
  • Nggunakake paket sarana ing program bebarengan.
Predikat minangka fitur penting ing uji coba piranti lunak. Antarmuka fungsi nggampangake kanggo misahake unit kanggo testing, mbenakake readability lan ngatur kode app.

Sintaksis Predikat ing Basa Jawa

java.util.function.Predicate dikenalaké ing Jawa 8 minangka cara alternatif kanggo nangani tayangan taksiran ing Lambda. Tampilan standar antarmuka yaiku Predikat<T> , ing ngendi T minangka argumen tunggal sing ngasilake nilai boolean. Predikat Jawa nduweni tes metode fungsional (abstrak) (Obyek) sing ngevaluasi predikat iki ing Obyek tartamtu.

@FunctionalInterface
public interface Predicate<T> {
boolean test(T t);
}
Punika conto nulis Predikat prasaja sing nyaring ongko adhedhasar kahanan "luwih saka", "kurang saka".

// An example of a simple Java predicate
  
import java.util.function.Predicate; 
public class PredicateExample { 
    public static void main(String[] args) 
    { 
        // Creating predicate 
        Predicate<Integer> lesserThan = i -> (i < 18);  
  
        // Calling Predicate method 
        System.out.println(lesserThan.test(10));  
    }
}
Output bakal bener amarga 10 < 18. Conto liyane karo Predikat ing filter () . Predikat mbantu nyaring kabeh wong diwasa saka dhaptar umur.

  import java.util.List;
  import java.util.function.Predicate;

  public class PredicateExample {
      public static void main(String[] args) {
          List<Integer> ages = List.of(17, 18, 19, 28, 18, 28, 46, 7, 8, 9, 21, 12);
          NotLessThan18<Integer> isAdult = new NotLessThan18<>();
          ages.stream().filter(isAdult).forEach(System.out::println);
      }
  }



class NotLessThan18<E> implements Predicate<Integer> {

      @Override
      public boolean test(Integer v) {
          Integer ADULT = 18;
          return v >= ADULT;
      }
  }
Outpute yaiku:
18 19 28 18 28 46 21

Jawa 8 Metode Predikat

Antarmuka Predikat nduweni sawetara metode.
  • tes boolean (T t) ngevaluasi predikat ing argumen sing diwenehake.
  • Predikat standar<T> lan (Predikat<? super T> liyane) ngasilake predikat sing nggambarake logika sirkuit cendhak AND predikat iki lan liyane.
  • Predikat standar<T> utawa ngasilake predikat sing dumadi sing makili OR logika sirkuit cendhak saka predikat iki lan liyane.
  • Predikat standar <T> negate () ngasilake predikat sing ngelawan karo predikat iki kanthi logis.
  • Predikat standar<T> isEqual(Object targetRef) ngasilake asil tes yen rong argumen padha miturut Objects.equals(Object, Object) .

tes boolean (T t)

Iki minangka cara fungsional kanggo predikat Jawa sing ngevaluasi apa argumen sing diwenehake cocog karo kondisi predikat. Tuladha: ing kene kita nggawe predikat diwasa kanggo saben wong sing umure 18 taun utawa luwih. metode test () entuk nilai integer lan mriksa.

import java.util.function.Predicate;
public class PredicateTestTest {
   public static void main(String[] args) {
       Predicate<Integer> adult = i -> i >= 18;
       System.out.println(adult.test(12));
       System.out.println(adult.test(19));
       System.out.println(adult.test(21));
   }
}
Apa sing bakal dadi output kanggo kode ing ndhuwur? Ing kasus sing sepisanan, amarga 12 kurang saka 18, iku bakal palsu. Dene skenario kaping kalih lan kaping telu, syarat-syaratipun dipuntepangi supados wangsulipun leres.
palsu bener bener

Default Predicate.and()

Cara iki makili operator "lan". Pramila menawi salah satunggaling predikat ingkang dipunparingaken boten jumbuh kaliyan syarat ingkang dipuntemtokaken, predikat sanesipun boten badhe pikantuk evaluasi. Tuladha: Ayo gawe predikat ing basa Jawa, nyaring kabeh wong sing wis diwasa nanging luwih enom saka 65 nggunakake lan() . Ayo nggunakake predikat.add () lan nulis predikat java karo lambda kanggo kondisi iki: Yen kondisi bener, app bakal bali statement ing ngisor iki:

import java.util.function.Predicate;

   public class PredicateDemo {
       public static void main(String[] args) {
           Predicate<Integer> adultYet = i -> i >= 18;
           Predicate<Integer> adultStill = i -> i < 65;
           System.out.println(adultYet.and(adultStill).test(5));
           System.out.println(adultYet.and(adultStill).test(38));
           System.out.println(adultYet.and(adultStill).test(90));
       }
   }
Outpute yaiku:
palsu bener palsu

Default Predicate.or()

Metode Predicate.or() nggantosi operator "OR". Iki tegese kondisi bakal tetep bener sanajan siji saka rong predikat bener lan siji liyane salah. Conto: ayo ngevaluasi string karakter saiki. Coba gunakake metode OR kanggo ngurutake kabeh frasa sing ngemot substring "my" utawa "crayon".

import java.util.function.Predicate;

  public class PredicateDemo2 {
      public static void main(String[] args) {
          Predicate<String> containsA = t -> t.contains("crayon");
          Predicate<String> containsB = t -> t.contains("my");
          System.out.println(containsA.or(containsB).test("here is my crayon"));
          System.out.println(containsA.or(containsB).test("here is my pencil"));
          System.out.println(containsA.or(containsB).test("here is John's crayon"));
          System.out.println(containsA.or(containsB).test("here is John's pencil"));
      }
  }
Outpute yaiku:
bener bener bener salah

Predikat default negate()

metode negate () digunakake kanggo ngumpulake kabeh nilai sing ora tundhuk karo kritéria sing wis ditemtokake. Conto: yen sampeyan pengin ngurutake kelas "Tomat" lan nemokake kabeh entri sing ora "Abang", sampeyan bisa nulis Predikat lan cepet mindai kabeh urutan. Coba tulis kode iki dhewe lan priksa solusi kasebut yen wis rampung.

import java.util.function.Predicate;

public class PredicateDemo3 {
public static void main(String[] args) {
 Predicate<Integer> adult = i -> i >= 18;
System.out.println(adult.negate().test(7));  System.out.println(adult.negate().test(19))
  }
   }
Outpute yaiku:
bener palsu

Predikat statis padha (Object targetRef)

Cara iki migunani banget yen sampeyan pengin nemtokake manawa rong obyek padha karo nilai sing ditetepake minangka parameter Objects.equals (). Cara iki luwih migunani yen sampeyan kudu mbandhingake asil tes sing padha. Conto: umpamane sampeyan mbandhingake rong gerbong woh pir lan pengin mesthekake yen loro-lorone duwe bobot lan werna sing standar. Ing kasus iki, Predikat statis isEqual(Object targetRef) persis cara sing sampeyan butuhake. Ayo goleki carane isEqual mriksa kesetaraan rong senar:

import java.util.function.Predicate;

public class PredicateDemo2 {
   public static void main(String[] args) {
       Predicate<String> i = Predicate.isEqual("here is my crayon");
       System.out.println(i.test("here is my pencil"));
       System.out.println(i.test("here is my crayon"));
   }
}
Yen obyek sing sampeyan analisa tundhuk karo kondisi standar, fungsi kasebut bakal bali bener. Outpute yaiku:
palsu bener

Java IntPredicate

Java IntPredicate minangka antarmuka fungsional, supaya sampeyan bisa nggunakake minangka target tugas kanggo ekspresi lambda utawa referensi metode. IntPredicate ngoperasikake integer lan ngasilake nilai predikat adhedhasar kondisi. Kayata Antarmuka Predikat, IntPredicate uga nduweni metode test() , lan() , negate() , utawa() . Punika conto IntPredicate. Uga nyaring kabeh wong diwasa (18 utawa luwih) saka array.

import java.util.Arrays;
import java.util.function.IntPredicate;

public class IntPredicateExample {

   public static void main(String[] args) {

       int[] ages = { 18, 28, 18, 46, 90, 45, 2, 3, 1, 5, 7, 21, 12 };

       IntPredicate p = n -> n >= 18;

       Arrays.stream(ages).filter(p).forEach(System.out::println);
   }
}
Outpute yaiku:
18 28 18 46 90 45 21

Nulis Predikat Bersih ing Basa Jawa

Predikat Jawa pancen fungsional lan nyenengake kanggo digarap. Nanging, yen sampeyan ora ngelingi carane ekspresi lambda sing sampeyan tulis bisa mengaruhi kode kasebut, ana risiko nyuda keterpeliharaan kode kanthi predikat sing ora apik. Ing ngisor iki sawetara praktik prasaja sing bakal mbantu sampeyan njamin antarmuka fungsional sampeyan gampang diatur lan diwaca.
  • Aja Ulangi Dhewe — aja gawe predikat nganggo basa Jawa kanthi nilai, metode, lan kahanan sing bola-bali luwih saka sepisan. Kanthi cara iki, sampeyan mbuwang wektu produktif lan nggawe kode dadi ora apik.
  • Predikat kapisah saka kode app kanggo mesthekake testability. Liyane saka iku, nggawe jadwal testing unit predikat lan tetep.
  • Gunakake pola impor lan komposisi kanggo mesthekake kelas sampeyan ora kembung lan tetep gampang diatur.
  • Coba mindhah predikat Java menyang kelas Helper — kanthi cara iki, sampeyan bisa nambah panggunaan kode maneh lan nggampangake pangopènan.
  • Keterbaca - yen bisa, luwih milih statement siji baris tinimbang predikat kompleks. Bisa uga nggodho kanggo nuduhake pangerten babagan antarmuka fungsional sing rumit. Nanging, nalika nerangake pangopènan, kurang luwih.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION