የጃቫ 8 ዥረት ትምህርቶች በኮድ ምሳሌዎች

በዚህ የብሎግ ልኡክ ጽሁፍ የጃቫ 8 ዥረት ባህሪያትን ለመወያየት እና ብዙ የተለያዩ የኮድ ምሳሌዎችን እናቀርባለን ፡፡

የጃቫ ዥረቶች ተግባራዊ ፕሮግራሞችን ወደ ጃቫ ያመጣሉ እናም ከጃቫ 8 ጀምሮ ይደገፋሉ ስለዚህ የቆየ የጃቫ ስሪት ካለዎት ከዚያ የጃቫ ዥረቶችን ለመጠቀም ወደ ጃቫ 8 ማሻሻል አለብዎት ፡፡



የጃቫ ዥረቶችን ለምን ተጠቀሙ?

የጅረቶች አንዳንድ ጥቅሞች-


  • ጅረቶች የበለጠ ቀልጣፋ የጃቫ ፕሮግራመር ያደርጉልዎታል (በጣም ጥቂት በሆኑ የኮድ መስመሮች ዥረቶችን በመጠቀም በእውነቱ በጣም ብዙ መድረስ እንደሚችሉ ያያሉ)።
  • የሚጣሉ ተግባራት ዓይነት የሆኑትን ላምባዳ አገላለጾችን በከፍተኛ ሁኔታ ይጠቀማሉ ፡፡
  • ParallelStreams በጣም በቀላሉ ትልቅ የውሂብ ባለብዙ-በክር ክወናዎች ያስችላቸዋል.


ጅረቶች ቧንቧ

በአብዛኛዎቹ ሁኔታዎች የጅረቶች ቧንቧ መስመር ሀ

  • ምንጭ (የእርስዎ ውሂብ የሚፈስበት ቦታ)
  • ተከትሎ ዜሮ ወይም ከዚያ በላይ መካከለኛ ክዋኔዎች
  • እና አንድ የተርሚናል ክወና

የጃቫ ዥረቶች - ማጣሪያ ፣ ካርታ ፣ መቀነስ


ምንጩ የንጥረ ነገሮችን ጅረት ሊለቅ ነው።



ያ የንጥረ ነገሮች ዥረት ሊጣራ ፣ ሊደረድር ይችላል ፣ ወይም በካርታ ወይም በእያንዲንደ ንጥረ ነገሮች ሊይ የተሇያዩ ሌሎች ተከታታይ ክዋኔዎች ሉሆን ይችሊሌ።

በመጨረሻ ሊሰበሰብም ሆነ ሊቀነስ ወይም ሌላ ተርሚናል ሊሠራ ይችላል ነገር ግን አንድ የተርሚናል ሥራዎች ብቻ ይከናወናሉ ፡፡

የዥረት ምንጭ

የዥረት ምንጭ ከስብስብ ፣ ከዝርዝሮች ፣ ከስብስቦች ፣ ከኢንተር ፣ ከናፍቆት ፣ ከድብል ፣ ከህብረቁምፊዎች ፣ ወዘተ.


የዥረት ክዋኔዎች

የዥረት ክዋኔዎች መካከለኛ ወይም ተርሚናል ናቸው

  • መካከለኛ ክዋኔዎች እንደዚህ ዓይነት ማጣሪያ, ካርታ, ወይም እንደ እኛ በርካታ መካከለኛ ቀዶ ያስሩኛል እንዲችሉ አንድ ዥረት ይመለሱ.
  • የተርሚናል ሥራዎች ዥረት ይቀበሉ እና እነሱ ባዶውን መመለስ ይችላሉ ወይም እንደ መቀነስ ያለ ዥረት ያልሆነ ውጤት መመለስ ይችላሉ። ዕቃዎችን ወደ ዝርዝር ይቀንሱ ፡፡

መካከለኛ ክዋኔዎች

  • ዜሮ ወይም ከዚያ በላይ መካከለኛ ክዋኔዎች ይፈቀዳሉ።
  • ጉዳዮችን ያዝዙ; ለትልቅ የውሂብ ስብስቦች መጀመሪያ ማጣሪያ ከዚያ መደርደር ወይም ካርታ ፡፡
  • ብዙ ክሮችን ለማንቃት በጣም ትልቅ የውሂብ ስብስቦች ለእኛ ParallelStream።

አንዳንዶቹ መካከለኛ ክዋኔዎች የሚከተሉትን ያካትታሉ:

  • anyMatch ()
  • የተለየ ()
  • ማጣሪያ ()
  • መጀመሪያ ()
  • ጠፍጣፋ ካርታ ()
  • ካርታ ()
  • ዝለል ()
  • ተደርድሯል ()

የተርሚናል ክዋኔዎች

አንድ የተርሚናል ክወና ብቻ ይፈቀዳል ፡፡

  • እያንዳንዱ እያንዳንዱን ንጥረ ነገር ተመሳሳይ ተግባር ስለሚጠቀም ለምሳሌ እያንዳንዱን አካል ያትሙ።
  • መሰብሰብ ሁሉንም ንጥረ ነገሮች ስብስብ ወይም ዝርዝር ወይም ድርድር ውስጥ ያስቀምጣቸዋል።
  • ሌሎች ሁሉም አማራጮች ጅረቱን ወደ አንድ ማጠቃለያ አካል ይቀንሰዋል።

አንዳንድ የመቀነስ ተግባራት ምሳሌዎች-


  • ቆጠራ ()
  • ከፍተኛ ()
  • ደቂቃ ()
  • መቀነስ ()


የጃቫ ዥረቶች ኮድ ምሳሌዎች

አሁን በኮድ ምሳሌዎች ውስጥ ከላይ የተጠቀሱትን ፅንሰ-ሐሳቦች እንመልከት ፡፡

ኢንቲጀር ዥረት

የመጀመሪያው ምሳሌ የኢንቲጀር ዥረት ብቻ ነው። IntStream ን በመጠቀም የኢቲጀር ዥረት እንፈጥራለን የመጠን እና የተለያዩ ተግባራትን የሚሰጠን ነው።

forEach የእኛ ተርሚናል ሥራ ነው ፡፡ ለእያንዳንዱ እቃ እኛ ልክ ልናወጣው ነው ፡፡

import java.io.IOException; import java.util.stream.IntStream; public class JavaStreams {
public static void main(String[] args) throws IOException {
IntStream

.range(1, 10)

.forEach(System.out::print);
System.out.println();
} }

ውጤት


123456789

ኢንቲጀር ዥረት ከዝለል ጋር

ሁለተኛው ምሳሌ ኢንቲጀር ዥረት ይጠቀማል ነገር ግን እኛ ታክሏል አንድ skip() እዚህ ፣ ስለዚህ በዚህ ጉዳይ ላይ የእኛን ጅረት የመጀመሪያዎቹን 5 ንጥረ ነገሮችን እናልፋለን።

ይህ ብቻ እኛ ደግሞ ንጥል ማተም ቀላል lambda አገላለጽ እየተጠቀሙ 9. በኩል ንጥረ 6 ማተም ይሆናል

import java.io.IOException; import java.util.stream.IntStream; public class JavaStreams {
public static void main(String[] args) throws IOException {
IntStream

.range(1, 10)

.skip(5)

.forEach(x -> System.out.println(x));
System.out.println();
} }

ውጤት

6 7 8 9

የኢንትመር ዥረት ከሱም ጋር

ሦስተኛው ምሳሌ ፣ እንደገና _ _ + _ | እንጠቀማለን ይሁን እንጂ ነገሮች ያለንን ዥረት ለመፍጠር, እኛ ያንን ከውስጥ አኖረ IntStream መግለጫ ለህትመት መስመሩ እንደ መለኪያ


የምናተምነው ከ 1 እስከ 5 ያለው ድምር በሌላ አነጋገር ነው ፣ 1 2 3 & 4 የእነዚህን ቁጥሮች ድምር ብቻ ያትማል ፡፡

println()

ውጤት

import java.io.IOException; import java.util.stream.IntStream; public class JavaStreams {
public static void main(String[] args) throws IOException {
System.out.println(
IntStream

.range(1, 5)

.sum());
System.out.println();
} }

ዥረት

ቀጣዩ ምሳሌ 10 ን ይጠቀማል ተግባር ፣ በእውነተኛ ምቹ ነው ፣ ምክንያቱም ብዙ ቁጥርን ፣ ተንሳፋፊ የነጥብ እሴቶችን ወይም ሕብረቁምፊዎችን ወይም ነገሮችን እንኳን በዥረት መልቀቅ ይችላሉ።

በዚህ ምሳሌ ውስጥ እኛ በቀጥታ የፊደል ቅደም ተከተል እናደርጋለን ከዚያ የመጀመሪያውን _2 + _ | በመጠቀም የመጀመሪያውን እቃ እናገኛለን ፡፡ ተግባር ከዚያ ፣ በዝርዝሩ ውስጥ የመጀመሪያውን ንጥል እናውቃለን ብቻ ፡፡

Stream.of

ውጤት

findFirst()

ከድርድር ይልቀቁ ፣ ይለዩ ፣ ያጣሩ እና ያትሙ

በሚቀጥለው ምሳሌችን ከድርድር ወደ ጅረት እንሄዳለን ፡፡ ከዚያ ለመደርደር ፣ ለማጣራት እና ከዚያ ለማተም እንሄዳለን።

እዚህ እኛ በ | _ + + | የሚጀምሩትን ብቻ እቃዎችን እናጣራለን ፡፡

import java.io.IOException; import java.util.stream.Stream; public class JavaStreams {
public static void main(String[] args) throws IOException {
Stream.of('Ava', 'Aneri', 'Alberto')

.sorted()

.findFirst()

.ifPresent(System.out::println);
} }
ውስጥ የሚወስድ ላምባዳ አገላለፅ እንጠቀማለን ይህም እያንዳንዱ ስም ነው እና ሰዎች ደብዳቤ ጋር መጀመር ይህም ከዚያም ቼኮች Alberto እና እነዚያን ያስተላልፋል።

ከዚያ እነሱን እንመድባቸዋለን እና ከዚያ ያንን ለሚያልፍ እያንዳንዱ እቃ እኛ እናተምበታለን ፡፡

s

ውጤት

X

የተቀናጀ ድርድር አማካይ

አሁን ደግሞ እኛ አንድ int ድርድር ርቢዎች አማካይ መውሰድ የምንችለው እንዴት እንደሆነ እስቲ እንመልከት.

እዚህ እኛ s እንጠቀማለን ተግባር የመቁጠሪያ ለመልቀቅ ከዚያም እኛ አጠቃቀም ይሄዳሉ import java.io.IOException; import java.util.Arrays; public class JavaStreams {
public static void main(String[] args) throws IOException {
String[] names = {'Al', 'Ankit', 'Kushal', 'Brent', 'Sarika', 'amanda', 'Hans', 'Shivika', 'Sarah'};
Arrays.stream(names)


.filter(x -> x.startsWith('S'))


.sorted()


.forEach(System.out::println);
} }
እያንዳንዱን ቁጥር እያንዳንዱን ቁጥር ወደ አደባባይ ለማውጣት ፡፡

Sarah Sarika Shivika

ውጤት

Arrays.stream()

ከአንድ ኢንቲጀር ይልቅ ሁለቴ እንደሚያወጣ ልብ ይበሉ ፡፡

ከዝርዝር ዥረት ፣ ማጣሪያ እና ማተም

በዚህ ምሳሌ ውስጥ, እኛ, ዝርዝር ለመልቀቅ እነዚያን ነገሮች ለማጣራት ከዚያም ለማተም ይሄዳሉ.

map() ውስጥ መሆኑን ልብ ይበሉ ተግባር ፣ ሁሉንም ስሞች ወደ ትናንሽ ፊደሎች እንለውጣቸዋለን።

import java.util.Arrays; public class JavaStreams {
public static void main(String[] args) {
Arrays.stream(new int[] {2, 4, 6, 8, 10})


.map(x -> x * x)


.average()


.ifPresent(System.out::println);
} }

ውጤት

44.0

map() የሚጀምሩ ሦስት ስሞች እንዳሉን ማየት እንችላለን እና ሁሉም በትንሽ ፊደል ውስጥ ናቸው።

ረድፎችን ከጽሑፍ ፋይል ፣ በደርደር ፣ በማጣሪያ እና በማተም ዥረት ያድርጉ

በሚቀጥለው ምሳሌችን ከጽሑፍ ፋይል ረድፎችን በዥረት እንለቃለን ፡፡ እኛ ለመደርደር, ለማጣራት እና ለማተም እንሄዳለን.

እስቲ import java.util.Arrays; import java.util.List; public class JavaStreams {
public static void main(String[] args) {
List people = Arrays.asList('Al', 'Ankit', 'Brent', 'Sarika', 'amanda', 'Hans', 'Shivika', 'Sarah');
people


.stream()


.map(String::toLowerCase)


.filter(x -> x.startsWith('a'))


.forEach(System.out::println);
} }
የሚባል ፋይል አለን ብለን እናስብ ከዚህ በታች ከሚታዩ ይዘቶች ጋር

al ankit amanda

እኛ እንጠቀማለን a ፋይሉ እያንዳንዱ መስመር እኛን ሕብረቁምፊ አንድ ዥረት ለመስጠት ይሄዳል የእኛን ዥረት ለመፍጠር.

አንዴ የእኛን ዥረት ካገኘን እነሱን እንለየው እና ከ 13 ቁምፊዎች በላይ የሆኑ እቃዎችን እናጣራለን እና ከዚያ የቀሩትን ዕቃዎች እናተም ፡፡

_ + _ | | በመጨረሻም, እኛ ማድረግ እንዲሁ ፋይሉን ለመዝጋት አላቸው.

bands.txt

ውጤት

Rolling Stones Lady Gaga Jackson Browne Maroon 5 Arijit Singh Elton John John Mayer CCR Eagles Pink Aerosmith Adele Taylor Swift

ከ 13 በላይ ቁምፊዎች ያላቸውን ሁለት ባንዶች እናገኛለን ፡፡

ረድፎችን ከጽሑፍ ፋይል ይልቀቁ እና ወደ ዝርዝር ውስጥ ያስቀምጡ

ለዚህ ምሳሌ ከዚህ በላይ ያለውን የጽሑፍ ፋይል እንጠቀማለን ፡፡

_ + _ | | በመጠቀም Files.lines() እኛ ደብዳቤዎች የያዙ ዕቃዎች ውጭ ለማጣራት ይፈልጋሉ የሕብረቁምፊ ተግባር ብቻ ነው።

bands.close ን በመጠቀም ሁሉንም በደብዳቤዎች እንጨምራለን import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.stream.Stream; public class JavaStreams {
public static void main(String[] args) throws IOException {
Stream bands = Files.lines(Paths.get('bands.txt'));
bands


.sorted()


.filter(x -> x.length() > 13)


.forEach(System.out::println);
bands.close();
} }
ወደ ዝርዝር.

አንዴ ዝርዝር ካወጣን በኋላ Jackson Browne Rolling Stones ን መጠቀም እንችላለን ዕቃዎቹን ለማተም ኦፕሬተር ፡፡

jit

ውጤት

x.contains()

ረድፎችን ከ CSV ፋይል ይልቀቁ እና ይቆጥሩ

በዚህ ምሳሌ ውስጥ ረድፎችን ከሲኤስቪ ፋይል እንለቃለን እና ጥሩዎቹን ረድፎች እንቆጥራለን ፡፡

.collect() የሚባል ፋይል አለን እንበል ከሚከተሉት ይዘቶች ጋር

jit

እኛ ዥረት ከ አንድ ማስቀረት ይፈልጋሉ እዚህ, ረድፍ ኢ, ምንም ውሂብ የለውም.

በሚከተለው ኮድ ውስጥ በእያንዳንዱ ረድፍ እናነባለን ከዚያም በኮማዎች ላይ ወደ አንድ ድርድር መከፋፈል ያስፈልገናል ስለዚህ እያንዳንዱ ረድፍ የእቃዎች ድርድር ይሆናል ፡፡

ከዚያ ሶስት እቃዎችን የሌሉ ረድፎችን ለማጣራት ማጣሪያን እንተገብራለን ፡፡

forEach

ውጤት

import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; public class JavaStreams {
public static void main(String[] args) throws IOException {
List bands2 = Files.lines(Paths.get('bands.txt'))


.filter(x -> x.contains('jit'))


.collect(Collectors.toList());
bands2.forEach(x -> System.out.println(x));
} }

ቅነሳ - ድምር

ይህ ምሳሌ ቅነሳን እንዴት እንደሚጠቀሙ ያሳያል። ወደ ድምር እንቀንሳለን ፡፡ እዚህ እኛ Arijit Singh ን በመጠቀም ድርብ ጅረት አለን ተግባር እኛ በሦስት የተለያዩ እሴቶች ውስጥ ሶስት ደርቦ የገለጿቸው እና ተግባር ለመቀነስ ለመጠቀም ይሄዳሉ.

data.txt

ውጤት

A,12,3.7 B,17,2.8 C,14,1.9 D,23,2.7 E F,18,3.4