iT邦幫忙

2023 iThome 鐵人賽

DAY 7
0
Modern Web

自己開發一個~?系列 第 7

JAVA程式碼~倒數4天~

  • 分享至 

  • xImage
  •  

其實只是純粹解釋從底開始~JAVA程式碼~
真的是有乾乾的~
所以倒數中~
後面就真的要用springboot啦~

/images/emoticon/emoticon04.gif

程式碼

package Stream;
import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.Stream;

public class Stream02 {
	public static void main(String[] args) {
		
		// 中間操作: distinct() / filter()
//		List<Integer> number = Arrays.asList(13, 20, 20, 52, 60, 13, 40, 55, 60);
//		number.stream()
//		.distinct()//去重覆
//		.filter(i -> i % 10 == 0)//條件
//		.forEach(System.out::println);
//
//		// 中間操作: filter()
//		List<String> name = Arrays.asList("SHU", "KEN", "JING", "JOE");
//		name.stream().filter(n -> n.startsWith("J")).forEach(System.out::println);

//		// 中間操作:peek()
//		Stream.of(1, 2, 3, 4, 5)
//		.peek(i -> System.out.println("-->" + i))
//		.forEach(i -> System.out.println(": " + i));

//		// 中間操作:sorted()
//		Stream.of(1, 2, 3, 4, 5, 4, 1, 6, 2).sorted().forEach(System.out::println);
//
//		List<String> name2 = Arrays.asList("SHU", "KEN", "JING", "JOE");
//		name2.stream()
//		.sorted(Comparator.reverseOrder())//大到小
//		.forEach(System.out::println);

//		// 中間操作:limit() / skip()
//		Stream.of(1, 2, 3, 4, 5, 4, 1, 6, 2)
//		.sorted()
		// .limit(3)
//		.skip(3)
//		.forEach(System.out::println);

//		// 結束操作: count()
//		long i = Stream.of(1, 2, 3, 4, 5, 4, 1, 6, 2).count();
//		System.out.println("total: " + i);

//		// 中間操作:max() / min()--> Integer / Optional
//		Stream.of("a1", "a2", "a3", "a4")
//		.map(s -> s.substring(1))
//		.mapToInt(Integer::parseInt)// 轉成整數
////		.max()
//		 .min()// 返回Optional物件
//		.ifPresent(System.out::println);// 執行Optional的方法
//
//		IntStream s = IntStream.of(10, 20, 30, 40, 50);
//		OptionalInt obj = s.max();
//		if (obj.isPresent()) {
//			System.out.println(obj.getAsInt());
//		} else {
//			System.out.println("-1");
//		}

//		// 結束操作:reduce()
//		List<Integer> num = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
//		int sum = num.stream()
//				 //.reduce(0, (a,b)->a+b);
//				.reduce(0, Integer::sum);
//		System.out.println("SUM= " + sum);
//
//		Optional<Integer> max = num.stream().reduce(Integer::max);
//		System.out.println(max);

//		// 中間操作:average() / sum()
		int i1 = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).mapToInt(o -> o).sum();
		System.out.println(i1);

		OptionalDouble avg = Stream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
				.mapToDouble(o1 -> o1)
				.average();
		System.out.println(avg);

	}
}



顯示
https://ithelp.ithome.com.tw/upload/images/20231018/20119035wzv6YbSeut.png


解釋程式碼
這段Java程式碼演示了Java流(Stream)的各種中間操作和結束操作,讓我們逐段解釋:

  1. distinct()filter() 中間操作:

    • 使用 distinct() 移除重複的元素。
    • 使用 filter() 根據條件過濾元素。
  2. filter() 中間操作:

    • 使用 filter() 根據條件過濾元素。
  3. peek() 中間操作:

    • 使用 peek() 可以在處理元素時執行附加的動作,這裡示範了如何印出處理過的元素。
  4. sorted() 中間操作:

    • 使用 sorted() 可以對元素進行排序,預設升冪排序。
    • 使用 Comparator.reverseOrder() 可以改為降冪排序。
  5. limit()skip() 中間操作:

    • 使用 limit() 限制元素的數量。
    • 使用 skip() 跳過指定數量的元素。
  6. count() 結束操作:

    • 使用 count() 統計流中元素的數量。
  7. max()min() 中間操作:

    • 使用 map() 轉換元素,然後使用 max()min() 找到最大或最小的元素。
    • 注意,max()min() 返回的是 Optional 對象,需要使用 ifPresent() 等方法檢查是否有值。
  8. reduce() 結束操作:

    • 使用 reduce() 可以對元素執行歸納運算,例如計算總和。
    • Integer::sum 是一個方法引用,用於將兩個整數相加。
  9. average()sum() 結束操作:

    • 使用 mapToDouble() 將整數流轉換為 double 流,然後使用 average() 計算平均值。
    • 使用 mapToInt() 將 double 流轉換為整數流,然後使用 sum() 計算總和。

這些流操作允許你以更簡潔和可讀的方式處理和轉換數據集。它們通常與集合(如 ListArrays)一起使用,以執行各種數據處理任務。

/images/emoticon/emoticon08.gif

/images/emoticon/emoticon08.gif

謝謝收看/images/emoticon/emoticon41.gif


上一篇
JAVA程式碼~
下一篇
JAVA程式碼~倒數3天~
系列文
自己開發一個~?30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言