Java 8 (Java SE 8) нь 2014 оны 3-р сарын 18-нд гарсан.
Python мэтийн зарим программчлалын хэл дээр байдаг боловч жавагийн өмнөх хувилбаруудад байгаагүй хэд хэдэн халуухан шинэ боломжууд нэмэгдэж, жавагийн фэнүүдийг багагүй баярлуулж байсан билээ. Эдгээр боломжуудаас хамгийн түгээмэл хэрэглэгддгийг нь цөөхөн үгээр тайлбарлая.
Ж1: ArrayList-н элемент бүрийг upper case хийж хэвлэе.
List<String> languages = new ArrayList<>(Arrays.asList("java", "python", "c#", "c++", "php"));
Жишээ. Жагсаалтаас 3-аас их ранктай хэлнүүдийг хасаж хэвлэе.
Товчхондоо нэг иймэрхүү. Эдгээрийн талаар дараа дэлгэрүүлж постолно.
Python мэтийн зарим программчлалын хэл дээр байдаг боловч жавагийн өмнөх хувилбаруудад байгаагүй хэд хэдэн халуухан шинэ боломжууд нэмэгдэж, жавагийн фэнүүдийг багагүй баярлуулж байсан билээ. Эдгээр боломжуудаас хамгийн түгээмэл хэрэглэгддгийг нь цөөхөн үгээр тайлбарлая.
1. forEach() method
Collection-ы элемент бүрээр давтаж, давтах бүрт нэгэн төрлийн lambda expression бүхий үйлдэл гүйцэтгэнэ. Collection нь ArrayList, HashMap, ConcurrentHashMap, Vector, Queue, LinkedList г.м Iterable болон Map төрлийн классууд юм.Ж1: ArrayList-н элемент бүрийг upper case хийж хэвлэе.
List<String> languages = new ArrayList<>(Arrays.asList("java", "python", "c#", "c++", "php"));
List<String> languages = new ArrayList<>(Arrays.asList("java", "python", "c#", "c++", "php"));
languages.forEach(t -> {
t = t.toUpperCase();
System.out.println(t);
});
Ж2: HashMap-н элемент бүрээр давтаж, python-ы ранкийг 1 болгож өөрчилье.
Map<String, Integer> languageRank = new HashMap<>();
languageRank.put("java", 2);
languageRank.put("c#", 4);
languageRank.put("python", 3);
languageRank.forEach((k, v) -> {
if (k.equals("python"))
languageRank.put(k, 1);
});
2. Lambda expression
Lambda expression бол жава 8-ын хамгийн том, хамгийн чухал, хамгийн хайр хүрмээр боломж бөгөөд жава дээрх функциональ программчлалын эхний алхам болсон юм. Функциональ төрлийн программчлалыг хөнгөвчлөх, энгийн бөгөөд товчхон бичих, илүү хурдан ажиллах боломжийг олгодог. Ялангуяа Collection сангуудтай ажиллахад нэн тохиромжтой. Жишээлбэл, collections-оос хайх, шүүх, утга өөрчлөх г.м. Lambda expression-ийг жаахан бүдүүлгээр нэргүй функц гэж ч ойлгож болно.Жишээ. Жагсаалтаас 3-аас их ранктай хэлнүүдийг хасаж хэвлэе.
public class Language {
private String name;
private int rank;
public Language(String name, int rank) {
super();
this.name = name;
this.rank = rank;
}
public String getName() {
return name;
}
public int getRank() {
return rank;
}
@Override
public String toString() {
return String.format("%s: %s", this.name, this.rank);
}
}
List<Language> langs = new ArrayList<>(Arrays.asList(new Language("java", 1), new Language("python", 2),
new Language("c#", 3), new Language("c++", 4), new Language("php", 5), new Language("ruby", 6)));
langs = langs.stream().filter(t -> t.getRank() <= 3).collect(Collectors.toList());
System.out.println(langs);
Хариу: [java: 1, python: 2, c#: 3]
3. Stream API
Stream API бас л маш их үр өгөөжтэй боломжуудын нэг. Collection дээр filter/map/reduce үйлдлүүдийг гүйцэтгэнэ. Тухайлбал, тодорхой нөхцөлөөр шүүх (filter), элемент бүрийн эсвэл нөхцөл хангасан элементүүдийн утгыг өөрчлөх (map), коллекцийн элементүүдээс тодорхой ганц үр дүн гаргаж авах (reduce) г.м. Дараалсан эсвэл параллел хэлбэрээр ажилладаг. stream(), parallelStream() method-уудаар хэрэгжүүлнэ.4. Time API
Жавагийн өмнөх огноотой ажилладаг сан, функцүүдийг бараг орвонгоор нь өөрчилсөн. Өмнө байсан thread safe биш, ойлгоход, кодчилоход төвөгтэй зэрэг асуудлыг шийдсэнд гол давуу тал нь оршино. LocalDate, LocalTime классуудын тусламжтайгаар хэрэгжүүлнэ.Товчхондоо нэг иймэрхүү. Эдгээрийн талаар дараа дэлгэрүүлж постолно.
Comments
Post a Comment