CodeGym /ื‘ืœื•ื’ Java /Random-HE /ื”ืกื‘ืจ ืขืœ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื” ื‘ื’'ืื•ื•ื”. ืขื ื“ื•ื’ืžืื•ืช ื•ืžืฉื™ืžื•ืช. ื—ืœืง 1
John Squirrels
ืจึธืžึธื”
San Francisco

ื”ืกื‘ืจ ืขืœ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื” ื‘ื’'ืื•ื•ื”. ืขื ื“ื•ื’ืžืื•ืช ื•ืžืฉื™ืžื•ืช. ื—ืœืง 1

ืคื•ืจืกื ื‘ืงื‘ื•ืฆื”
ืœืžื™ ืžื™ื•ืขื“ ื”ืžืืžืจ ื”ื–ื”?
  • ื–ื” ืžื™ื•ืขื“ ืœืื ืฉื™ื ืฉื—ื•ืฉื‘ื™ื ืฉื”ื ื›ื‘ืจ ืžื›ื™ืจื™ื ื”ื™ื˜ื‘ ืืช Java Core, ืื‘ืœ ืื™ืŸ ืœื”ื ืžื•ืฉื’ ืœื’ื‘ื™ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื” ื‘ื’'ืื•ื•ื”. ืื• ืฉืื•ืœื™ ืฉืžืขื• ืžืฉื”ื• ืขืœ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื”, ืื‘ืœ ื”ืคืจื˜ื™ื ื—ืกืจื™ื
  • ื–ื” ืžื™ื•ืขื“ ืœืื ืฉื™ื ืฉื™ืฉ ืœื”ื ื”ื‘ื ื” ืžืกื•ื™ืžืช ืฉืœ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื”, ืื‘ืœ ืขื“ื™ื™ืŸ ื ืจืชืขื™ื ืžื”ื ื•ืœื ืจื’ื™ืœื™ื ืœื”ืฉืชืžืฉ ื‘ื”ื.
ื”ืกื‘ืจ ืขืœ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื” ื‘ื’'ืื•ื•ื”.  ืขื ื“ื•ื’ืžืื•ืช ื•ืžืฉื™ืžื•ืช.  ื—ืœืง 1 - 1ืื ืื™ื ืš ืžืชืื™ื ืœืื—ืช ืžื”ืงื˜ื’ื•ืจื™ื•ืช ื”ืœืœื•, ืืชื” ืขืœื•ืœ ืœืžืฆื•ื ืžืืžืจ ื–ื” ืžืฉืขืžื, ืคื’ื•ื, ืื• ื‘ื“ืจืš ื›ืœืœ ืœื ื›ื•ืก ื”ืชื” ืฉืœืš. ื‘ืžืงืจื” ื–ื”, ืืœ ืชื”ืกืก ืœืขื‘ื•ืจ ืœื“ื‘ืจื™ื ืื—ืจื™ื ืื•, ืื ืืชื” ื‘ืงื™ื ื‘ื ื•ืฉื, ื‘ื‘ืงืฉื” ืœื”ืฆื™ืข ื”ืฆืขื•ืช ื‘ื”ืขืจื•ืช ื›ื™ืฆื“ ืื•ื›ืœ ืœืฉืคืจ ืื• ืœื”ืฉืœื™ื ืืช ื”ืžืืžืจ. ื”ื—ื•ืžืจ ืื™ื ื• ืžืชื™ื™ืžืจ ืœื”ื™ื•ืช ื‘ืขืœ ืขืจืš ืืงื“ืžื™ ื›ืœืฉื”ื•, โ€‹โ€‹ืฉืœื ืœื“ื‘ืจ ืขืœ ื—ื™ื“ื•ืฉ. ืœื”ื™ืคืš: ืื ืกื” ืœืชืืจ ื“ื‘ืจื™ื ืžื•ืจื›ื‘ื™ื (ืขื‘ื•ืจ ืื ืฉื™ื ืžืกื•ื™ืžื™ื) ื‘ืฆื•ืจื” ืคืฉื•ื˜ื” ื›ื›ืœ ื”ืืคืฉืจ. ื‘ืงืฉื” ืœื”ืกื‘ื™ืจ ืืช ื”-API ืฉืœ Stream ื”ืขื ื™ืงื” ืœื™ ื”ืฉืจืื” ืœื›ืชื•ื‘ ืืช ื–ื”. ื—ืฉื‘ืชื™ ืขืœ ื–ื” ื•ื”ื—ืœื˜ืชื™ ืฉื—ืœืง ืžื“ื•ื’ืžืื•ืช ื”ื–ืจื ืฉืœื™ ื™ื”ื™ื• ื‘ืœืชื™ ืžื•ื‘ื ื•ืช ืœืœื ื”ื‘ื ื” ืฉืœ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื”. ืื– ื ืชื—ื™ืœ ืขื ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื”. ืžื” ืืชื” ืฆืจื™ืš ืœื“ืขืช ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ืžืืžืจ ื”ื–ื”?
  1. ืขืœื™ืš ืœื”ื‘ื™ืŸ ืชื›ื ื•ืช ืžื•ื ื—ื” ืขืฆืžื™ื (OOP), ื›ืœื•ืžืจ:

    • ืžื—ืœืงื•ืช, ืื•ื‘ื™ื™ืงื˜ื™ื ื•ื”ื”ื‘ื“ืœ ื‘ื™ื ื™ื”ื;
    • ืžืžืฉืงื™ื, ื›ื™ืฆื“ ื”ื ืฉื•ื ื™ื ืžืžื—ืœืงื•ืช, ื•ื”ืงืฉืจ ื‘ื™ืŸ ืžืžืฉืงื™ื ืœืžื—ืœืงื•ืช;
    • ืฉื™ื˜ื•ืช, ื›ื™ืฆื“ ืœืงืจื•ื ืœื”ืŸ, ืฉื™ื˜ื•ืช ืžื•ืคืฉื˜ื•ืช (ื›ืœื•ืžืจ ืฉื™ื˜ื•ืช ืœืœื ืžื™ืžื•ืฉ), ืคืจืžื˜ืจื™ ืžืชื•ื“ื”, ืืจื’ื•ืžื ื˜ื™ื ืฉืœ ืžืชื•ื“ื” ื•ื›ื™ืฆื“ ืœื”ืขื‘ื™ืจ ืื•ืชื;
    • ืžืฉื ื” ื’ื™ืฉื”, ืฉื™ื˜ื•ืช/ืžืฉืชื ื™ื ืกื˜ื˜ื™ื™ื, ืฉื™ื˜ื•ืช/ืžืฉืชื ื™ื ืกื•ืคื™ื™ื;
    • ื™ืจื•ืฉื” ืฉืœ ืžื—ืœืงื•ืช ื•ืžืžืฉืงื™ื, ื™ืจื•ืฉื” ืžืจื•ื‘ื” ืฉืœ ืžืžืฉืงื™ื.
  2. ื™ื“ืข ื‘-Java Core: ืกื•ื’ื™ื ื’ื ืจื™ื™ื (ื’ื ืจื™ื™ื), ืื•ืกืคื™ื (ืจืฉื™ืžื•ืช), ืฉืจืฉื•ืจื™ื.
ื•ื‘ื›ืŸ, ื‘ื•ืื• ื ื™ื’ืฉ ืœื–ื”.

ืงืฆืช ื”ื™ืกื˜ื•ืจื™ื”

ื‘ื™ื˜ื•ื™ื™ ืœืžื“ื” ื”ื’ื™ืขื• ืœื’'ืื•ื•ื” ืžื”ืชื›ื ื•ืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™, ื•ืœืฉื ืžื”ืžืชืžื˜ื™ืงื”. ื‘ืืจืฆื•ืช ื”ื‘ืจื™ืช ื‘ืืžืฆืข ื”ืžืื” ื”-20, ืขื‘ื“ ืืœื•ื ื–ื• ืฆ'ืจืฅ', ืฉื”ื™ื” ืžืื•ื“ ืื•ื”ื‘ ืžืชืžื˜ื™ืงื” ื•ื›ืœ ืžื™ื ื™ ื”ืคืฉื˜ื•ืช, ื‘ืื•ื ื™ื‘ืจืกื™ื˜ืช ืคืจื™ื ืกื˜ื•ืŸ. ืืœื•ื ื–ื• ืฆ'ืจืฅ' ื”ื™ื” ื–ื” ืฉื”ืžืฆื™ื ืืช ื—ืฉื‘ื•ืŸ ื”ืœืžื‘ื“ื”, ืฉื”ื™ื” ื‘ืชื—ื™ืœื” ืื•ืกืฃ ืฉืœ ืจืขื™ื•ื ื•ืช ืžื•ืคืฉื˜ื™ื ืœื—ืœื•ื˜ื™ืŸ ืฉืื™ื ื ืงืฉื•ืจื™ื ืœืชื›ื ื•ืช. ืžืชืžื˜ื™ืงืื™ื ื›ืžื• ืืœืŸ ื˜ื™ื•ืจื™ื ื’ ื•ื’'ื•ืŸ ืคื•ืŸ ื ื•ื™ืžืŸ ืขื‘ื“ื• ื‘ืื•ืชื• ื–ืžืŸ ื‘ืื•ื ื™ื‘ืจืกื™ื˜ืช ืคืจื™ื ืกื˜ื•ืŸ. ื”ื›ืœ ื”ืชืื—ื“: ืฆ'ืจืฅ' ื”ืžืฆื™ื ืืช ื—ืฉื‘ื•ืŸ ื”ืœืžื‘ื“ื”. ื˜ื™ื•ืจื™ื ื’ ืคื™ืชื— ืืช ืžื›ื•ื ืช ื”ืžื—ืฉื•ื‘ ื”ืžื•ืคืฉื˜ืช ืฉืœื•, ื”ืžื›ื•ื ื” ื›ื™ื•ื "ืžื›ื•ื ืช ื˜ื™ื•ืจื™ื ื’". ื•ืคื•ืŸ ื ื•ื™ืžืŸ ื”ืฆื™ืข ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžื—ืฉื‘ื™ื ืฉื”ื™ื•ื•ื” ืืช ื”ื‘ืกื™ืก ืœืžื—ืฉื‘ื™ื ืžื•ื“ืจื ื™ื™ื (ืฉื ืงืจืื™ื ื›ื™ื•ื "ืืจื›ื™ื˜ืงื˜ื•ืจืช ืคื•ืŸ ื ื•ื™ืžืŸ"). ื‘ืื•ืชื” ืชืงื•ืคื”, ืจืขื™ื•ื ื•ืชื™ื• ืฉืœ ืืœื•ื ื–ื• ืฆ'ืจืฅ' ืœื ื”ืคื›ื• ื™ื“ื•ืขื™ื ื›ืœ ื›ืš ื›ืžื• ื™ืฆื™ืจื•ืชื™ื”ื ืฉืœ ืขืžื™ืชื™ื• (ืœืžืขื˜ ืชื—ื•ื ื”ืžืชืžื˜ื™ืงื” ื”ื˜ื”ื•ืจื”). ืขื ื–ืืช, ืงืฆืช ืžืื•ื—ืจ ื™ื•ืชืจ ื’'ื•ืŸ ืžืงืืจืชื™ (ื’ื ื‘ื•ื’ืจ ืื•ื ื™ื‘ืจืกื™ื˜ืช ืคืจื™ื ืกื˜ื•ืŸ, ื•ื‘ื–ืžืŸ ื”ืกื™ืคื•ืจ ืฉืœื ื•, ืขื•ื‘ื“ ืฉืœ ื”ืžื›ื•ืŸ ื”ื˜ื›ื ื•ืœื•ื’ื™ ืฉืœ ืžืกืฆ'ื•ืกื˜ืก) ื”ื—ืœ ืœื”ืชืขื ื™ื™ืŸ ื‘ืจืขื™ื•ื ื•ืชื™ื• ืฉืœ ืฆ'ืจืฅ'. ื‘ืฉื ืช 1958, ื”ื•ื ื™ืฆืจ ืืช ืฉืคืช ื”ืชื›ื ื•ืช ื”ืคื•ื ืงืฆื™ื•ื ืœื™ืช ื”ืจืืฉื•ื ื”, LISP, ื”ืžื‘ื•ืกืกืช ืขืœ ื”ืจืขื™ื•ื ื•ืช ื”ืœืœื•. ื•-58 ืฉื ื™ื ืžืื•ื—ืจ ื™ื•ืชืจ, ื”ืจืขื™ื•ื ื•ืช ืฉืœ ืชื›ื ื•ืช ืคื•ื ืงืฆื™ื•ื ืœื™ ื“ืœืคื• ืœืชื•ืš Java 8. ืืคื™ืœื• 70 ืฉื ื” ืœื ืขื‘ืจื•... ื‘ื›ื ื•ืช, ื–ื” ืœื ื”ืืจื•ืš ื‘ื™ื•ืชืจ ืฉืœืงื— ืœืจืขื™ื•ืŸ ืžืชืžื˜ื™ ืœื”ื™ื•ืช ืžื™ื•ืฉื ื‘ืคื•ืขืœ.

ืœื‘ ื”ืขื ื™ื™ืŸ

ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื”ื•ื ืกื•ื’ ืฉืœ ืคื•ื ืงืฆื™ื”. ืืชื” ื™ื›ื•ืœ ืœื”ืชื™ื™ื—ืก ืœื–ื” ื›ืฉื™ื˜ืช Java ืจื’ื™ืœื”, ืื‘ืœ ืขื ื”ื™ื›ื•ืœืช ื”ื™ื™ื—ื•ื“ื™ืช ืœืขื‘ื•ืจ ืœืฉื™ื˜ื•ืช ืื—ืจื•ืช ื›ื˜ื™ืขื•ืŸ. ื–ื” ื ื›ื•ืŸ. ื–ื” ื”ืคืš ืœื”ื™ื•ืช ืืคืฉืจื™ ืœื”ืขื‘ื™ืจ ืœื ืจืง ืžืกืคืจื™ื, ืžื—ืจื•ื–ื•ืช ื•ื—ืชื•ืœื™ื ืœืฉื™ื˜ื•ืช, ืืœื ื’ื ืฉื™ื˜ื•ืช ืื—ืจื•ืช! ืžืชื™ ืื•ืœื™ ื ืฆื˜ืจืš ืืช ื–ื”? ื–ื” ื™ืขื–ื•ืจ, ืœืžืฉืœ, ืื ื ืจืฆื” ืœื”ืขื‘ื™ืจ ืฉื™ื˜ืช ื”ืชืงืฉืจื•ืช ื—ื•ื–ืจืช ื›ืœืฉื”ื™. ื›ืœื•ืžืจ, ืื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืฉื”ืฉื™ื˜ื” ืฉืื ื• ืงื•ืจืื™ื ืœื” ืฉืชื”ื™ื” ืœื ื• ื”ื™ื›ื•ืœืช ืœืงืจื•ื ืœืฉื™ื˜ื” ืื—ืจืช ืฉืื ื• ืžืขื‘ื™ืจื™ื ืืœื™ื”. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ืื– ื™ืฉ ืœื ื• ืืช ื”ื™ื›ื•ืœืช ืœื”ืขื‘ื™ืจ ื”ืชืงืฉืจื•ืช ื—ื•ื–ืจืช ืื—ืช ื‘ื ืกื™ื‘ื•ืช ืžืกื•ื™ืžื•ืช ื•ื”ืชืงืฉืจื•ืช ื—ื•ื–ืจืช ืื—ืจืช ื‘ืื—ืจื•ืช. ื•ื›ื“ื™ ืฉื”ืฉื™ื˜ื” ืฉืœื ื• ืฉืžืงื‘ืœืช ืืช ื”ื”ืชืงืฉืจื•ืช ืฉืœื ื• ืงื•ืจืืช ืœื”ื. ืžื™ื•ืŸ ื”ื•ื ื“ื•ื’ืžื” ืคืฉื•ื˜ื”. ื ื ื™ื— ืฉืื ื—ื ื• ื›ื•ืชื‘ื™ื ืื™ื–ื” ืืœื’ื•ืจื™ืชื ืžื™ื•ืŸ ื—ื›ื ืฉื ืจืื” ื›ืš:
public void mySuperSort() {
    // We do something here
    if(compare(obj1, obj2) > 0)
    // And then we do something here
}
ื‘ื”ืฆื”ืจื” if, ืื ื• ืงื•ืจืื™ื ืœืฉื™ื˜ื” compare(), ื”ืขื‘ืจืช ืฉื ื™ ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื™ืฉ ืœื”ืฉื•ื•ืช, ื•ืื ื• ืจื•ืฆื™ื ืœื“ืขืช ืื™ื–ื” ืžื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืœืœื• ื”ื•ื "ื’ื“ื•ืœ ื™ื•ืชืจ". ืื ื• ืžื ื™ื—ื™ื ืฉื”"ื’ื“ื•ืœ" ื‘ื ืœืคื ื™ ื”"ืคื—ื•ืช". ืฉืžืชื™ "ื’ื“ื•ืœ" ื‘ืžืจื›ืื•ืช, ื›ื™ ืื ื—ื ื• ื›ื•ืชื‘ื™ื ืฉื™ื˜ื” ืื•ื ื™ื‘ืจืกืœื™ืช ืฉืชื“ืข ืœืžื™ื™ืŸ ืœื ืจืง ื‘ืกื“ืจ ืขื•ืœื”, ืืœื ื’ื ื‘ืกื“ืจ ื™ื•ืจื“ (ื‘ืžืงืจื” ื”ื–ื”, ื”ืขืฆื "ื”ื’ื“ื•ืœ" ื™ื”ื™ื” ื‘ืขืฆื ื”ื—ืคืฅ "ื”ืคื—ื•ืช" , ื•ืœื”ื™ืคืš). ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืืช ื”ืืœื’ื•ืจื™ืชื ื”ืกืคืฆื™ืคื™ ืœืžื™ื•ืŸ ืฉืœื ื•, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืžื ื’ื ื•ืŸ ื›ืœืฉื”ื• ืฉื™ืขื‘ื™ืจ ืื•ืชื• ืœืฉื™ื˜ื” ืฉืœื ื• mySuperSort(). ื›ืš ื ื•ื›ืœ "ืœืฉืœื•ื˜" ื‘ืฉื™ื˜ื” ืฉืœื ื• ื›ืืฉืจ ื”ื™ื ื ืงืจืืช. ื›ืžื•ื‘ืŸ, ื ื•ื›ืœ ืœื›ืชื•ื‘ ืฉืชื™ ืฉื™ื˜ื•ืช ื ืคืจื“ื•ืช - mySuperSortAscend()ื•ื›ืŸ mySuperSortDescend()- ืœืžื™ื•ืŸ ื‘ืกื“ืจ ืขื•ืœื” ื•ื™ื•ืจื“. ืื• ืฉื ื•ื›ืœ ืœื”ืขื‘ื™ืจ ืืจื’ื•ืžื ื˜ ื›ืœืฉื”ื• ืœืžืชื•ื“ื” (ืœื“ื•ื’ืžื”, ืžืฉืชื ื” ื‘ื•ืœื™ืื ื™; ืื ื ื›ื•ืŸ, ืื– ืžื™ื•ืŸ ื‘ืกื“ืจ ืขื•ืœื”, ื•ืื ืœื ื ื›ื•ืŸ, ืื– ื‘ืกื“ืจ ื™ื•ืจื“). ืื‘ืœ ืžื” ืื ื ืจืฆื” ืœืžื™ื™ืŸ ืžืฉื”ื• ืžืกื•ื‘ืš ื›ืžื• ืจืฉื™ืžื” ืฉืœ ืžืขืจื›ื™ ืžื—ืจื•ื–ื•ืช? ืื™ืš ื”ืฉื™ื˜ื” ืฉืœื ื• mySuperSort()ืชื“ืข ืœืžื™ื™ืŸ ืืช ืžืขืจื›ื™ ื”ืžื—ืจื•ื–ื•ืช ื”ืœืœื•? ืœืคื™ ืžื™ื“ื”? ืœืคื™ ื”ืื•ืจืš ื”ืžืฆื˜ื‘ืจ ืฉืœ ื›ืœ ื”ืžื™ืœื™ื? ืื•ืœื™ ืœืคื™ ื”ืืœืคื‘ื™ืชื™ ืขืœ ื”ืžื—ืจื•ื–ืช ื”ืจืืฉื•ื ื” ื‘ืžืขืจืš? ื•ืžื” ืื ื ืฆื˜ืจืš ืœืžื™ื™ืŸ ืืช ืจืฉื™ืžืช ื”ืžืขืจื›ื™ื ืœืคื™ ื’ื•ื“ืœ ื”ืžืขืจืš ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื, ื•ืœืคื™ ื”ืื•ืจืš ื”ืžืฆื˜ื‘ืจ ืฉืœ ื›ืœ ื”ืžื™ืœื™ื ื‘ื›ืœ ืžืขืจืš ื‘ืžืงืจื™ื ืื—ืจื™ื? ืื ื™ ืžืฆืคื” ืฉื›ื‘ืจ ืฉืžืขืชื ืขืœ ื”ืฉื•ื•ืื•ืช ื•ืฉื‘ืžืงืจื” ื”ื–ื” ืคืฉื•ื˜ ื ืขื‘ื™ืจ ืœืฉื™ื˜ืช ื”ืžื™ื•ืŸ ืฉืœื ื• ืื•ื‘ื™ื™ืงื˜ ื”ืฉื•ื•ืื” ืฉืžืชืืจ ืืช ืืœื’ื•ืจื™ืชื ื”ืžื™ื•ืŸ ื”ืจืฆื•ื™. ืžื›ื™ื•ื•ืŸ ืฉื”ืฉื™ื˜ื” ื”ืกื˜ื ื“ืจื˜ื™ืช sort()ืžื™ื•ืฉืžืช ืขืœ ื‘ืกื™ืก ืื•ืชื• ืขื™ืงืจื•ืŸ ื›ืžื• mySuperSort(), ืืฉืชืžืฉ sort()ื‘ื“ื•ื’ืžืื•ืช ืฉืœื™.
String[] array1 = {"Dota", "GTA5", "Halo"};
String[] array2 = {"I", "really", "love", "Java"};
String[] array3 = {"if", "then", "else"};

List<String[]> arrays = new ArrayList<>();
arrays.add(array1);
arrays.add(array2);
arrays.add(array3);

Comparator<;String[]> sortByLength = new Comparator<String[]>() {
    @Override
    public int compare(String[] o1, String[] o2) {
        return o1.length - o2.length;
    }
};

Comparator<String[]> sortByCumulativeWordLength = new Comparator<String[]>() {

    @Override
    public int compare(String[] o1, String[] o2) {
        int length1 = 0;
        int length2 = 0;
        for (String s : o1) {
            length1 += s.length();
        }

        for (String s : o2) {
            length2 += s.length();
        }

        return length1 - length2;
    }
};

arrays.sort(sortByLength);
ืชื•ึนืฆึธืึธื”:
  1. Dota GTA5 Halo
  2. if then else
  3. I really love Java
ื›ืืŸ ื”ืžืขืจื›ื™ื ืžืžื•ื™ื ื™ื ืœืคื™ ืžืกืคืจ ื”ืžื™ืœื™ื ื‘ื›ืœ ืžืขืจืš. ืžืขืจืš ืขื ืคื—ื•ืช ืžื™ืœื™ื ื ื—ืฉื‘ ืœ"ืคื—ื•ืช". ืœื›ืŸ ื–ื” ื‘ื ืงื•ื“ื. ืžืขืจืš ืขื ื™ื•ืชืจ ืžื™ืœื™ื ื ื—ืฉื‘ ืœ"ื’ื“ื•ืœ ื™ื•ืชืจ" ื•ืžืžื•ืงื ื‘ืกื•ืคื•. ืื ื ืขื‘ื™ืจ ื’ื•ืจื ื”ืฉื•ื•ืื” ืฉื•ื ื” ืœืฉื™ื˜ื” sort(), ื›ื’ื•ืŸ sortByCumulativeWordLength, ืื– ื ืงื‘ืœ ืชื•ืฆืื” ืฉื•ื ื”:
  1. if then else
  2. Dota GTA5 Halo
  3. I really love Java
ื›ืขืช ืžืขืจื›ื™ ื”-are ืžืžื•ื™ื ื™ื ืœืคื™ ื”ืžืกืคืจ ื”ื›ื•ืœืœ ืฉืœ ื”ืื•ืชื™ื•ืช ื‘ืžื™ืœื™ื ืฉืœ ื”ืžืขืจืš. ื‘ืžืขืจืš ื”ืจืืฉื•ืŸ, ื™ืฉ 10 ืื•ืชื™ื•ืช, ื‘ืฉื ื™ - 12, ื•ื‘ืฉืœื™ืฉื™ - 15. ืื ื™ืฉ ืœื ื• ืจืง ืžืฉื•ื•ื” ื‘ื•ื“ื“, ืื– ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืœื”ื›ืจื™ื– ืขืœ ืžืฉืชื ื” ื ืคืจื“ ืขื‘ื•ืจื•. ื‘ืžืงื•ื ื–ืืช, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืคืฉื•ื˜ ืœื™ืฆื•ืจ ืžื—ืœืงื” ืื ื•ื ื™ืžื™ืช ืžืžืฉ ื‘ื–ืžืŸ ื”ืงืจื™ืื” ืœืฉื™ื˜ื” sort(). ืžืฉื”ื• ื›ื–ื”:
String[] array1 = {"Dota", "GTA5", "Halo"};
String[] array2 = {"I", "really", "love", "Java"};
String[] array3 = {"if", "then", "else"};

List<String[]> arrays = new ArrayList<>();

arrays.add(array1);
arrays.add(array2);
arrays.add(array3);

arrays.sort(new Comparator<String[]>() {
    @Override
    public int compare(String[] o1, String[] o2) {
        return o1.length - o2.length;
    }
});
ื ืงื‘ืœ ืืช ืื•ืชื” ืชื•ืฆืื” ื›ืžื• ื‘ืžืงืจื” ื”ืจืืฉื•ืŸ. โ€ฏ ืžืฉื™ืžื” 1. ืฉื›ืชื‘ื• ืืช ื”ื“ื•ื’ืžื” ื”ื–ื• ื›ืš ืฉืชืžื™ื™ืŸ ืžืขืจื›ื™ื ืœื ื‘ืกื“ืจ ืขื•ืœื” ืฉืœ ืžืกืคืจ ื”ืžื™ืœื™ื ื‘ื›ืœ ืžืขืจืš, ืืœื ื‘ืกื“ืจ ื™ื•ืจื“. ืื ื—ื ื• ื›ื‘ืจ ื™ื•ื“ืขื™ื ืืช ื›ืœ ื–ื”. ืื ื—ื ื• ื™ื•ื“ืขื™ื ืœื”ืขื‘ื™ืจ ื—ืคืฆื™ื ืœืฉื™ื˜ื•ืช. ื‘ื”ืชืื ืœืžื” ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ื›ืจื’ืข, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืขื‘ื™ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื•ื ื™ื ืœืฉื™ื˜ื”, ืืฉืจ ืชืคืขื™ืœ ืืช ื”ืฉื™ื˜ื” ืฉื™ื™ืฉืžื ื•. ื–ื” ืžืขืœื” ืืช ื”ืฉืืœื”: ืœืžื” ื‘ื›ืœืœ ืฆืจื™ืš ื›ืืŸ ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื”?โ€ฏ ื›ื™ ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื”ื•ื ืื•ื‘ื™ื™ืงื˜ ืฉื™ืฉ ืœื• ื‘ื“ื™ื•ืง ืฉื™ื˜ื” ืื—ืช. ื›ืžื• "ืื•ื‘ื™ื™ืงื˜ ืฉื™ื˜ื”". ืฉื™ื˜ื” ืืจื•ื–ื” ื‘ืื•ื‘ื™ื™ืงื˜. ืคืฉื•ื˜ ื™ืฉ ืœื• ืชื—ื‘ื™ืจ ืžืขื˜ ืœื ืžื•ื›ืจ (ืื‘ืœ ืขื•ื“ ืขืœ ื–ื” ื‘ื”ืžืฉืš). ื‘ื•ืื• ื ืกืชื›ืœ ืฉื•ื‘ ืขืœ ื”ืงื•ื“ ื”ื–ื”:
arrays.sort(new Comparator<String[]>() {
    @Override
    public int compare(String[] o1, String[] o2) {
        return o1.length - o2.length;
    }
});
ื›ืืŸ ืื ื—ื ื• ืœื•ืงื—ื™ื ืืช ืจืฉื™ืžืช ื”ืžืขืจื›ื™ื ืฉืœื ื• ื•ืงื•ืจืื™ื ืœืžืชื•ื“ื” ืฉืœื• sort(), ืืœื™ื” ืื ื—ื ื• ืžืขื‘ื™ืจื™ื ืื•ื‘ื™ื™ืงื˜ ื”ืฉื•ื•ืื” ื‘ืฉื™ื˜ื” ื‘ื•ื“ื“ืช compare()(ื”ืฉื ืฉืœื• ืœื ืžืฉื ื” ืœื ื• - ืื—ืจื™ ื”ื›ืœ, ื–ื• ื”ืฉื™ื˜ื” ื”ื™ื—ื™ื“ื” ืฉืœ ื”ืื•ื‘ื™ื™ืงื˜ ื”ื–ื”, ืื– ืื ื—ื ื• ืœื ื™ื›ื•ืœื™ื ืœื˜ืขื•ืช). ืœืฉื™ื˜ื” ื–ื• ื™ืฉ ืฉื ื™ ืคืจืžื˜ืจื™ื ืฉืื™ืชื ื ืขื‘ื•ื“. ืื ืืชื” ืขื•ื‘ื“ ื‘- IntelliJ IDEA, ื‘ื˜ื— ืจืื™ืช ืฉื”ื•ื ืžืฆื™ืข ืœืจื›ื– ืืช ื”ืงื•ื“ ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ื‘ืื•ืคืŸ ื”ื‘ื:
arrays.sort((o1, o2) -> o1.length - o2.length);
ื–ื” ืžืคื—ื™ืช ืฉื™ืฉื” ืฉื•ืจื•ืช ืœืื—ื“ ืงืฆืจ. 6 ืฉื•ืจื•ืช ื ื›ืชื‘ื•ืช ืžื—ื“ืฉ ื›ืื—ืช ืงืฆืจื”. ืžืฉื”ื• ื ืขืœื, ืื‘ืœ ืื ื™ ืžื‘ื˜ื™ื— ืฉื–ื” ืœื ื”ื™ื” ืžืฉื”ื• ื—ืฉื•ื‘. ื”ืงื•ื“ ื”ื–ื” ื™ืขื‘ื•ื“ ื‘ื“ื™ื•ืง ื›ืžื• ืฉื”ื•ื ื™ืขื‘ื•ื“ ืขื ืžื—ืœืงื” ืื ื•ื ื™ืžื™ืช. ืžืฉื™ืžื” 2. ื—ืฉื‘ื• ืขืœ ืฉื›ืชื•ื‘ ื”ืคืชืจื•ืŸ ืœืžืฉื™ืžื” 1 ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” (ืœืคื—ื•ืช, ื‘ืงืฉ ืž-IntelliJ IDEA ืœื”ืžื™ืจ ืืช ื”ื›ื™ืชื” ื”ืื ื•ื ื™ืžื™ืช ืฉืœืš ืœื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื”).

ื‘ื•ืื• ื ื“ื‘ืจ ืขืœ ืžืžืฉืงื™ื

ื‘ืื•ืคืŸ ืขืงืจื•ื ื™, ืžืžืฉืง ื”ื•ื ืคืฉื•ื˜ ืจืฉื™ืžื” ืฉืœ ืฉื™ื˜ื•ืช ืžื•ืคืฉื˜ื•ืช. ื›ืืฉืจ ืื ื• ื™ื•ืฆืจื™ื ืžื—ืœืงื” ืฉืžื™ื™ืฉืžืช ืžืžืฉืง ื›ืœืฉื”ื•, โ€‹โ€‹ื”ืžื—ืœืงื” ืฉืœื ื• ื—ื™ื™ื‘ืช ืœื™ื™ืฉื ืืช ื”ืžืชื•ื“ื•ืช ื”ื›ืœื•ืœื•ืช ื‘ืžืžืฉืง (ืื• ืฉืขืœื™ื ื• ืœื”ืคื•ืš ืืช ื”ืžื—ืœืงื” ืœืžื•ืคืฉื˜ืช). ื™ืฉ ืžืžืฉืงื™ื ืขื ื”ืžื•ืŸ ืฉื™ื˜ื•ืช ืฉื•ื ื•ืช (ืœื“ื•ื’ืžื”,โ€ฏ List), ื•ื™ืฉ ืžืžืฉืงื™ื ืขื ืฉื™ื˜ื” ืื—ืช ื‘ืœื‘ื“ (ืœื“ื•ื’ืžื”, Comparatorืื• Runnable). ื™ืฉื ื ืžืžืฉืงื™ื ืฉืื™ืŸ ืœื”ื ืฉื™ื˜ื” ืื—ืช (ืžื” ืฉื ืงืจื ืžืžืฉืงื™ ืกืžืŸ ื›ื’ื•ืŸ Serializable). ืžืžืฉืงื™ื ืฉื™ืฉ ืœื”ื ืจืง ืฉื™ื˜ื” ืื—ืช ื ืงืจืื™ื ื’ื ืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื . ื‘-Java 8, ื”ื ืืคื™ืœื• ืžืกื•ืžื ื™ื ื‘ื”ืขืจื” ืžื™ื•ื—ื“ืช: @FunctionalInterface. ืžืžืฉืงื™ื ืืœื” ืฉืœ ืฉื™ื˜ื” ืื—ืช ืžืชืื™ืžื™ื ื›ืกื•ื’ื™ ื™ืขื“ ืœื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื”. ื›ืคื™ ืฉืืžืจืชื™ ืœืžืขืœื”, ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื”ื•ื ืฉื™ื˜ื” ืขื˜ื•ืคื” ื‘ืื•ื‘ื™ื™ืงื˜. ื•ื›ืฉืื ื—ื ื• ืขื•ื‘ืจื™ื ืื•ื‘ื™ื™ืงื˜ ื›ื–ื”, ืื ื—ื ื• ื‘ืขืฆื ืขื•ื‘ืจื™ื ืืช ื”ืฉื™ื˜ื” ื”ื‘ื•ื“ื“ืช ื”ื–ื•. ืžืกืชื‘ืจ ืฉืœื ืื›ืคืช ืœื ื• ืื™ืš ืงื•ืจืื™ื ืœืฉื™ื˜ื”. ื”ื“ื‘ืจื™ื ื”ื™ื—ื™ื“ื™ื ืฉื—ืฉื•ื‘ื™ื ืœื ื• ื”ื ืคืจืžื˜ืจื™ ื”ืฉื™ื˜ื” ื•ื›ืžื•ื‘ืŸ ื’ื•ืฃ ื”ืฉื™ื˜ื”. ื‘ืžื”ื•ืชื•, ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื”ื•ื ื™ื™ืฉื•ื ืฉืœ ืžืžืฉืง ืคื•ื ืงืฆื™ื•ื ืœื™. ื‘ื›ืœ ืžืงื•ื ื‘ื• ืื ื• ืจื•ืื™ื ืžืžืฉืง ืขื ืฉื™ื˜ื” ืื—ืช, ื ื™ืชืŸ ืœืฉื›ืชื‘ ืžื—ืœืงื” ืื ื•ื ื™ืžื™ืช ื›ืœืžื‘ื“ื”. ืื ืœืžืžืฉืง ื™ืฉ ื™ื•ืชืจ ืื• ืคื—ื•ืช ืžืฉื™ื˜ื” ืื—ืช, ืื– ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ืœื ื™ืขื‘ื•ื“ ื•ื‘ืžืงื•ื ื–ืืช ื ืฉืชืžืฉ ื‘ืžื—ืœืงื” ืื ื•ื ื™ืžื™ืช ืื• ืืคื™ืœื• ื‘ืžื•ืคืข ืฉืœ ืžื—ืœืงื” ืจื’ื™ืœื”. ืขื›ืฉื™ื• ื”ื’ื™ืข ื”ื–ืžืŸ ืœื—ืคื•ืจ ืงืฆืช ื‘ืœืžื‘ื“ื•ืช. :)

ืชื—ื‘ื™ืจ

ื”ืชื—ื‘ื™ืจ ื”ื›ืœืœื™ ื”ื•ื ื‘ืขืจืš ื›ืš:
(parameters) -> {method body}
ื›ืœื•ืžืจ, ืกื•ื’ืจื™ื™ื ื”ืžืงื™ืคื™ื ืืช ืคืจืžื˜ืจื™ ื”ืฉื™ื˜ื”, "ื—ืฅ" (ืฉื ื•ืฆืจ ืขืœ ื™ื“ื™ ืžืงืฃ ื•ืกื™ืžืŸ ื’ื“ื•ืœ ืž-), ื•ืœืื—ืจ ืžื›ืŸ ื’ื•ืฃ ื”ืฉื™ื˜ื” ื‘ืกื•ื’ืจื™ื, ื›ืžื• ืชืžื™ื“. ื”ืคืจืžื˜ืจื™ื ืชื•ืืžื™ื ืœืืœื” ืฉืฆื•ื™ื ื• ื‘ืฉื™ื˜ืช ื”ืžืžืฉืง. ืื ืกื•ื’ื™ ืžืฉืชื ื™ื ื™ื›ื•ืœื™ื ืœื”ื™ืงื‘ืข ื‘ืื•ืคืŸ ื—ื“ ืžืฉืžืขื™ ืขืœ ื™ื“ื™ ื”ืžื”ื“ืจ (ื‘ืžืงืจื” ืฉืœื ื•, ื”ื•ื ื™ื•ื“ืข ืฉืื ื—ื ื• ืขื•ื‘ื“ื™ื ืขื ืžืขืจื›ื™ ืžื—ืจื•ื–ืช, ื›ื™ Listื”ืื•ื‘ื™ื™ืงื˜ ืฉืœื ื• ืžื•ืงืœื“ ื‘ืืžืฆืขื•ืช String[]), ืื– ืืชื” ืœื ืฆืจื™ืš ืœืฆื™ื™ืŸ ืืช ื”ืกื•ื’ื™ื ืฉืœื”ื.
ืื ื”ื ืžืขื•ืจืคืœื™ื, ืฆื™ื™ืŸ ืืช ื”ืกื•ื’. IDEA ื™ืฆื‘ืข ืื•ืชื• ื‘ืืคื•ืจ ืื ืื™ืŸ ื‘ื• ืฆื•ืจืš.
ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืขื•ื“ ื‘ืžื“ืจื™ืš ื–ื” ืฉืœ Oracle ื•ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื. ื–ื” ื ืงืจื " ื”ืงืœื“ืช ื™ืขื“ ". ืืชื” ื™ื›ื•ืœ ืœืชืช ืฉื ืœืžืฉืชื ื™ื ืื™ืš ืฉืืชื” ืจื•ืฆื” - ืืชื” ืœื ืฆืจื™ืš ืœื”ืฉืชืžืฉ ื‘ืื•ืชื ืฉืžื•ืช ืฉืฆื•ื™ื ื• ื‘ืžืžืฉืง. ืื ืื™ืŸ ืคืจืžื˜ืจื™ื, ืคืฉื•ื˜ ืฆื™ื™ืŸ ืกื•ื’ืจื™ื™ื ืจื™ืงื™ื. ืื ื™ืฉ ืจืง ืคืจืžื˜ืจ ืื—ื“, ืคืฉื•ื˜ ืฆื™ื™ืŸ ืืช ืฉื ื”ืžืฉืชื ื” ืœืœื ืกื•ื’ืจื™ื™ื. ื›ืขืช, ืœืื—ืจ ืฉื”ื‘ื ื• ืืช ื”ืคืจืžื˜ืจื™ื, ื”ื’ื™ืข ื”ื–ืžืŸ ืœื“ื•ืŸ ื‘ื’ื•ืฃ ื‘ื™ื˜ื•ื™ ื”ืœืžื‘ื“ื”. ื‘ืชื•ืš ื”ืคืœื˜ื” ื”ืžืชื•ืœืชืœืช, ืืชื” ื›ื•ืชื‘ ืงื•ื“ ื‘ื“ื™ื•ืง ื›ืคื™ ืฉืืชื” ื›ื•ืชื‘ ื‘ืฉื™ื˜ื” ืจื’ื™ืœื”. ืื ื”ืงื•ื“ ืฉืœืš ืžื•ืจื›ื‘ ืžืฉื•ืจื” ืื—ืช, ืื– ืืชื” ื™ื›ื•ืœ ืœื”ืฉืžื™ื˜ ืืช ื”ืกื•ื’ืจื™ื ื”ืžืชื•ืœืชืœื™ื ืœื—ืœื•ื˜ื™ืŸ (ื‘ื“ื•ืžื” ืœื”ืฆื”ืจื•ืช ืื ื•ืœืœื•ืœืื•ืช ืขื‘ื•ืจ). ืื ื”ืœืžื‘ื“ื” ื”ืฉื•ืจื” ื”ื‘ื•ื“ื“ืช ืฉืœืš ืžื—ื–ื™ืจื” ืžืฉื”ื•, ืื™ื ืš ื—ื™ื™ื‘ืช ืœื›ืœื•ืœ ื”ืฆื”ืจื” return. ืื‘ืœ ืื ืืชื” ืžืฉืชืžืฉ ื‘ืคืœื˜ื” ืžืชื•ืœืชืœืช, ืื– ืืชื” ื—ื™ื™ื‘ ืœื›ืœื•ืœ ื‘ืžืคื•ืจืฉ returnื”ืฆื”ืจื”, ื‘ื“ื™ื•ืง ื›ืคื™ ืฉื”ื™ื™ืช ืขื•ืฉื” ื‘ืฉื™ื˜ื” ืจื’ื™ืœื”.

ื“ื•ื’ืžืื•ืช

ื“ื•ื’ืžื” 1.
() -> {}
ื”ื“ื•ื’ืžื” ื”ื›ื™ ืคืฉื•ื˜ื”. ื•ื”ื›ื™ ื—ืกืจ ื˜ืขื :), ื›ื™ ื–ื” ืœื ืขื•ืฉื” ื›ืœื•ื. ื“ื•ื’ืžื” 2.
() -> ""
ืขื•ื“ ื“ื•ื’ืžื” ืžืขื ื™ื™ื ืช. ื–ื” ืœื ืœื•ืงื— ื›ืœื•ื ื•ืžื—ื–ื™ืจ ืžื—ืจื•ื–ืช ืจื™ืงื” ( returnืžื•ืฉืžื˜, ื›ื™ ื–ื” ืžื™ื•ืชืจ). ื”ื ื” ืื•ืชื• ื”ื“ื‘ืจ, ืื‘ืœ ืขื return:
() -> {
    return "";
}
ื“ื•ื’ืžื” 3. "ืฉืœื•ื, ืขื•ืœื!" ืฉื™ืžื•ืฉ ื‘ืœืžื‘ื“ื”
() -> System.out.println("Hello, World!")
ื–ื” ืœื ืœื•ืงื— ื›ืœื•ื ื•ืœื ืžื—ื–ื™ืจ ื›ืœื•ื (ืื ื—ื ื• ืœื ื™ื›ื•ืœื™ื ืœืฉื™ื returnืœืคื ื™ ื”ืงืจื™ืื” ืืœ System.out.println(), ื›ื™ println()ืกื•ื’ ื”ื”ื—ื–ืจื” ืฉืœ ื”ืฉื™ื˜ื” ื”ื•ื void). ื–ื” ืคืฉื•ื˜ ืžืฆื™ื’ ืืช ื”ื‘ืจื›ื”. ื–ื” ืื™ื“ื™ืืœื™ ืœื™ื™ืฉื•ื ืฉืœ Runnableื”ืžืžืฉืง. ื”ื“ื•ื’ืžื” ื”ื‘ืื” ืžืœืื” ื™ื•ืชืจ:
public class Main {
    public static void main(String[] args) {
        new Thread(() -> System.out.println("Hello, World!")).start();
    }
}
ืื• ื›ื›ื”:
public class Main {
    public static void main(String[] args) {
        Thread t = new Thread(() -> System.out.println("Hello, World!"));
        t.start();
    }
}
ืื• ืฉื ื•ื›ืœ ืืคื™ืœื• ืœืฉืžื•ืจ ืืช ื‘ื™ื˜ื•ื™ ื”ืœืžื‘ื“ื” ื›ืื•ื‘ื™ื™ืงื˜ Runnableื•ืื– ืœื”ืขื‘ื™ืจ ืื•ืชื• ืœื‘ื ืื™ Thread:
public class Main {
    public static void main(String[] args) {
        Runnable runnable = () -> System.out.println("Hello, World!");
        Thread t = new Thread(runnable);
        t.start();
    }
}
ื‘ื•ืื• ื ืกืชื›ืœ ืžืงืจื•ื‘ ืขืœ ื”ืจื’ืข ืฉื‘ื• ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื ืฉืžืจ ืœืžืฉืชื ื”. ื”ืžืžืฉืง Runnableืื•ืžืจ ืœื ื• ืฉืœืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœื• ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช public void run()ืฉื™ื˜ื”. ืœืคื™ ื”ืžืžืฉืง, runื”ืฉื™ื˜ื” ืœื ืœื•ืงื—ืช ืคืจืžื˜ืจื™ื. ื•ื”ื•ื ืœื ืžื—ื–ื™ืจ ื›ืœื•ื, ื›ืœื•ืžืจ ืกื•ื’ ื”ื”ื—ื–ืจ ืฉืœื• ื”ื•ื void. ื‘ื”ืชืื ืœื›ืš, ื”ืงื•ื“ ื”ื–ื” ื™ื•ืฆืจ ืื•ื‘ื™ื™ืงื˜ ืขื ืฉื™ื˜ื” ืฉืœื ืœื•ืงื—ืช ืื• ืžื—ื–ื™ืจื” ื›ืœื•ื. ื–ื” ืžืชืื™ื ื‘ืื•ืคืŸ ืžื•ืฉืœื ืœืฉื™ื˜ืช Runnableื”ืžืžืฉืง run(). ื–ื• ื”ืกื™ื‘ื” ืฉื”ืฆืœื—ื ื• ืœืฉื™ื ืืช ื‘ื™ื˜ื•ื™ ื”ืœืžื‘ื“ื” ื”ื–ื” ื‘ืžืฉืชื ื” Runnable.โ€ฏ ื“ื•ื’ืžื” 4.
() -> 42
ืฉื•ื‘, ื–ื” ืœื ืฆืจื™ืš ื›ืœื•ื, ืื‘ืœ ื–ื” ืžื—ื–ื™ืจ ืืช ื”ืžืกืคืจ 42. ืืคืฉืจ ืœืฉื™ื ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื›ื–ื” ื‘ืžืฉืชื ื” Callable, ื›ื™ ืœืžืžืฉืง ื”ื–ื” ื™ืฉ ืจืง ืฉื™ื˜ื” ืื—ืช ืฉื ืจืื™ืช ื‘ืขืจืš ื›ืš:
V call(),
ืื™ืคื”โ€ฏ Vโ€ฏืกื•ื’ ื”ื”ื—ื–ืจื” (ื‘ืžืงืจื” ืฉืœื ื•,โ€ฏ int). ื‘ื”ืชืื ืœื›ืš, ืื ื• ื™ื›ื•ืœื™ื ืœืฉืžื•ืจ ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื‘ืื•ืคืŸ ื”ื‘ื:
Callable<Integer> c = () -> 42;
ื“ื•ื’ืžื” 5. ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ื”ื›ื•ืœืœ ืžืกืคืจ ืฉื•ืจื•ืช
() -> {
    String[] helloWorld = {"Hello", "World!"};
    System.out.println(helloWorld[0]);
    System.out.println(helloWorld[1]);
}
ืฉื•ื‘, ื–ื”ื• ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ืœืœื ืคืจืžื˜ืจื™ื ื•ืกื•ื’ voidื”ื—ื–ืจื” (ื›ื™ ืื™ืŸ returnืžืฉืคื˜).โ€ฏ ื“ื•ื’ืžื” 6
x -> x
ื›ืืŸ ืื ื—ื ื• ืœื•ืงื—ื™ื xืžืฉืชื ื” ื•ืžื—ื–ื™ืจื™ื ืื•ืชื•. ืฉื™ื ืœื‘ ืฉืื ื™ืฉ ืจืง ืคืจืžื˜ืจ ืื—ื“, ืื– ืืชื” ื™ื›ื•ืœ ืœื”ืฉืžื™ื˜ ืืช ื”ืกื•ื’ืจื™ื™ื ืกื‘ื™ื‘ื•. ื”ื ื” ืื•ืชื• ื“ื‘ืจ, ืื‘ืœ ืขื ืกื•ื’ืจื™ื™ื:
(x) -> x
ื•ื”ื ื” ื“ื•ื’ืžื” ืขื ื”ืฆื”ืจืช ื”ื—ื–ืจื” ืžืคื•ืจืฉืช:
x -> {
    return x;
}
ืื• ื›ื›ื” ืขื ืกื•ื’ืจื™ื™ื ื•ื”ืฆื”ืจืช ื”ื—ื–ืจื”:
(x) -> {
    return x;
}
ืื• ืขื ืฆื™ื•ืŸ ืžืคื•ืจืฉ ืฉืœ ื”ืกื•ื’ (ื•ื›ืš ื‘ืกื•ื’ืจื™ื™ื):
(int x) -> x
ื“ื•ื’ืžื” 7
x -> ++x
ืื ื—ื ื• ืœื•ืงื—ื™ื xื•ืžื—ื–ื™ืจื™ื ืื•ืชื•, ืื‘ืœ ืจืง ืœืื—ืจ ื”ื•ืกืคืช 1. ืืชื” ื™ื›ื•ืœ ืœืฉื›ืชื‘ ืืช ื”ืœืžื‘ื“ื” ื›ืš:
x -> x + 1
ื‘ืฉื ื™ ื”ืžืงืจื™ื, ืื ื• ืžืฉืžื™ื˜ื™ื ืืช ื”ืกื•ื’ืจื™ื™ื ืžืกื‘ื™ื‘ ืœื’ื•ืฃ ื”ืคืจืžื˜ืจ ื•ื”ืฉื™ื˜ื”, ื™ื—ื“ ืขื ื”ื”ืฆื”ืจื” return, ืžื›ื™ื•ื•ืŸ ืฉื”ื ืื•ืคืฆื™ื•ื ืœื™ื™ื. ื’ืจืกืื•ืช ืขื ืกื•ื’ืจื™ื™ื ื•ื”ืฆื”ืจืช ื”ื—ื–ืจื” ื ื™ืชื ื•ืช ื‘ื“ื•ื’ืžื” 6. ื“ื•ื’ืžื” 8
(x, y) -> x % y
ืื ื—ื ื• ืœื•ืงื—ื™ื xื•ืžื—ื–ื™ืจื™ื yืืช ืฉืืจื™ืช ื”ื—ืœื•ืงื” ืฉืœ xื‘ y. ื›ืืŸ ื ื“ืจืฉื™ื ื”ืกื•ื’ืจื™ื™ื ืกื‘ื™ื‘ ื”ืคืจืžื˜ืจื™ื. ื”ื ืื•ืคืฆื™ื•ื ืœื™ื™ื ืจืง ื›ืืฉืจ ื™ืฉ ืจืง ืคืจืžื˜ืจ ืื—ื“. ื”ื ื” ื–ื” ืขื ืฆื™ื•ืŸ ืžืคื•ืจืฉ ืฉืœ ื”ืกื•ื’ื™ื:
(double x, int y) -> x % y
ื“ื•ื’ืžื” 9
(Cat cat, String name, int age) -> {
    cat.setName(name);
    cat.setAge(age);
}
ืื ื—ื ื• ืœื•ืงื—ื™ื Catื—ืคืฅ, Stringืฉื ื•ื’ื™ืœ ืื™ื ื˜. ื‘ืฉื™ื˜ื” ืขืฆืžื” ืื ื• ืžืฉืชืžืฉื™ื ื‘ืฉื ื•ื‘ื’ื™ืœ ืฉืขื‘ืจื• ื›ื“ื™ ืœื”ื’ื“ื™ืจ ืžืฉืชื ื™ื ืขืœ ื”ื—ืชื•ืœ. ืžื›ื™ื•ื•ืŸ ืฉื”ืื•ื‘ื™ื™ืงื˜ ืฉืœื ื• catื”ื•ื ืกื•ื’ ื”ืชื™ื™ื—ืกื•ืช, ื”ื•ื ื™ืฉืชื ื” ืžื—ื•ืฅ ืœื‘ื™ื˜ื•ื™ ื”ืœืžื‘ื“ื” (ื”ื•ื ื™ืงื‘ืœ ืืช ื”ืฉื ื•ื”ื’ื™ืœ ืฉืขื‘ืจ). ื”ื ื” ื’ืจืกื” ืงืฆืช ื™ื•ืชืจ ืžืกื•ื‘ื›ืช ืฉืžืฉืชืžืฉืช ื‘ืœืžื‘ื“ื” ื“ื•ืžื”:
public class Main {

    public static void main(String[] args) {
        // Create a cat and display it to confirm that it is "empty"
        Cat myCat = new Cat();
        System.out.println(myCat);

        // Create a lambda
        Settable<Cat> s = (obj, name, age) -> {
            obj.setName(name);
            obj.setAge(age);

        };

        // Call a method to which we pass the cat and lambda
        changeEntity(myCat, s);

        // Display the cat on the screen and see that its state has changed (it has a name and age)
        System.out.println(myCat);

    }

    private static <T extends HasNameAndAge>  void changeEntity(T entity, Settable<T> s) {
        s.set(entity, "Smokey", 3);
    }
}

interface HasNameAndAge {
    void setName(String name);
    void setAge(int age);
}

interface Settable<C extends HasNameAndAge> {
    void set(C entity, String name, int age);
}

class Cat implements HasNameAndAge {
    private String name;
    private int age;

    @Override
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Cat{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
ืชื•ึนืฆึธืึธื”:
Cat{name='null', age=0}
Cat{name='Smokey', age=3}
ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, Catืœืื•ื‘ื™ื™ืงื˜ ื”ื™ื” ืžืฆื‘ ืื—ื“, ื•ืื– ื”ืžืฆื‘ ื”ืฉืชื ื” ืœืื—ืจ ืฉื”ืฉืชืžืฉื ื• ื‘ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื”. ื‘ื™ื˜ื•ื™ื™ ืœืžื“ื” ืžืฉืชืœื‘ื™ื ื‘ืฆื•ืจื” ืžื•ืฉืœืžืช ืขื ืชืจื•ืคื•ืช ื’ื ืจื™ื•ืช. ื•ืื ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ Dogืžื—ืœืงื” ืฉื’ื ืžื™ื™ืฉืžืช ืืช HasNameAndAge, ืื– ื ื•ื›ืœ ืœื‘ืฆืข ืืช ืื•ืชืŸ ืคืขื•ืœื•ืช ื‘ืฉื™ื˜ื” Dogืžื‘ืœื™ main()โ€ฏืœืฉื ื•ืช ืืช ื‘ื™ื˜ื•ื™ ื”ืœืžื‘ื“ื”. ืžืฉื™ืžื” 3. ื›ืชื•ื‘ ืžืžืฉืง ืคื•ื ืงืฆื™ื•ื ืœื™ ืขื ืฉื™ื˜ื” ืฉืœื•ืงื—ืช ืžืกืคืจ ื•ืžื—ื–ื™ืจื” ืขืจืš ื‘ื•ืœื™ืื ื™. ื›ืชื•ื‘ ืžื™ืžื•ืฉ ืฉืœ ืžืžืฉืง ื›ื–ื” ื›ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ืฉืžื—ื–ื™ืจ true ืื ื”ืžืกืคืจ ืฉืขื‘ืจ ืžืชื—ืœืง ื‘-13. ืžืฉื™ืžื” 4. ื›ืชื•ื‘ ืžืžืฉืง ืคื•ื ืงืฆื™ื•ื ืœื™ ื‘ืฉื™ื˜ื” ืฉืœื•ืงื—ืช ืฉืชื™ ืžื—ืจื•ื–ื•ืช ื•ื’ื ืžื—ื–ื™ืจื” ืžื—ืจื•ื–ืช. ื›ืชื•ื‘ ืžื™ืžื•ืฉ ืฉืœ ืžืžืฉืง ื›ื–ื” ื›ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ืฉืžื—ื–ื™ืจ ืืช ื”ืžื—ืจื•ื–ืช ื”ืืจื•ื›ื” ื™ื•ืชืจ. ืžืฉื™ืžื” 5. ื›ืชื•ื‘ ืžืžืฉืง ืคื•ื ืงืฆื™ื•ื ืœื™ ืขื ืฉื™ื˜ื” ืฉืœื•ืงื—ืช ืฉืœื•ืฉื” ืžืกืคืจื™ ื ืงื•ื“ื” ืฆืคื”: a, b ื•-c ื•ื’ื ืžื—ื–ื™ืจื” ืžืกืคืจ ื ืงื•ื“ื” ืฆืคื”. ื›ืชื•ื‘ ื™ื™ืฉื•ื ืฉืœ ืžืžืฉืง ื›ื–ื” ื›ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ืฉืžื—ื–ื™ืจ ืืช ื”ืžื‘ื—ื™ืŸ. ืœืžืงืจื” ืฉืฉื›ื—ืช, ื–ื”ื• D = b^2 โ€” 4ac. ืžืฉื™ืžื” 6. ื‘ืืžืฆืขื•ืช ื”ืžืžืฉืง ื”ืคื•ื ืงืฆื™ื•ื ืœื™ ืžืžืฉื™ืžื” 5, ื›ืชื•ื‘ ื‘ื™ื˜ื•ื™ ืœืžื‘ื“ื” ืฉืžื—ื–ื™ืจ ืืช ื”ืชื•ืฆืื” ืฉืœ a * b^c. ื”ืกื‘ืจ ืขืœ ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื” ื‘ื’'ืื•ื•ื”. ืขื ื“ื•ื’ืžืื•ืช ื•ืžืฉื™ืžื•ืช. ื—ืœืง 2
ื”ืขืจื•ืช
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION