国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java使用Stream API對(duì)于數(shù)據(jù)列表經(jīng)常處理

這篇具有很好參考價(jià)值的文章主要介紹了Java使用Stream API對(duì)于數(shù)據(jù)列表經(jīng)常處理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Java使用Stream API對(duì)于數(shù)據(jù)列表經(jīng)常處理,庖丁解牛,java,開(kāi)發(fā)語(yǔ)言

Java使用Stream API對(duì)于數(shù)據(jù)列表經(jīng)常處理

先提供一些簡(jiǎn)單到復(fù)雜的常見(jiàn)例子,您可以根據(jù)這些例子進(jìn)行進(jìn)一步的開(kāi)發(fā)和學(xué)習(xí):

數(shù)據(jù)過(guò)濾篩選操作

  1. 查詢(xún)表中所有數(shù)據(jù):
List<User> users = userDao.getAllUsers();
  1. 根據(jù)條件查詢(xún)單個(gè)結(jié)果:
Optional<User> user = userDao.getUserById(userId);
  1. 根據(jù)條件查詢(xún)多個(gè)結(jié)果,并取前幾條:
List<User> topUsers = userDao.getTopUsersByScore(10);
  1. 對(duì)查詢(xún)結(jié)果進(jìn)行排序:
List<User> sortedUsers = userDao.getAllUsers()
    .stream()
    .sorted(Comparator.comparing(User::getScore))
    .collect(Collectors.toList());
  1. 過(guò)濾符合條件的結(jié)果:
List<User> filteredUsers = userDao.getAllUsers()
    .stream()
    .filter(user -> user.getAge() >= 18)
    .collect(Collectors.toList());
  1. 對(duì)查詢(xún)結(jié)果進(jìn)行分頁(yè):
int pageSize = 10;
int pageNum = 1;
List<User> pageUsers = userDao.getAllUsers()
    .stream()
    .skip((pageNum - 1) * pageSize)
    .limit(pageSize)
    .collect(Collectors.toList());
  1. 對(duì)查詢(xún)結(jié)果進(jìn)行統(tǒng)計(jì):
long totalUserCount = userDao.getAllUsers().stream().count();
  1. 對(duì)查詢(xún)結(jié)果進(jìn)行求和:
int totalScores = userDao.getAllUsers()
    .stream()
    .mapToInt(User::getScore)
    .sum();
  1. 對(duì)查詢(xún)結(jié)果進(jìn)行分組:
Map<Integer, List<User>> ageGroup = userDao.getAllUsers()
    .stream()
    .collect(Collectors.groupingBy(User::getAge));
  1. 對(duì)查詢(xún)結(jié)果進(jìn)行去重:
List<String> distinctNames = userDao.getAllUsers()
    .stream()
    .map(User::getName)
    .distinct()
    .collect(Collectors.toList());

數(shù)據(jù)進(jìn)行計(jì)算篩選

  1. 計(jì)算一個(gè)整數(shù)列表中所有偶數(shù)的和:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int sum = numbers.stream()
                .filter(n -> n % 2 == 0)
                .mapToInt(Integer::intValue)
                .sum();
System.out.println("偶數(shù)之和:" + sum);
  1. 統(tǒng)計(jì)一個(gè)字符串列表中每個(gè)單詞出現(xiàn)的次數(shù):
List<String> words = Arrays.asList("apple", "banana", "orange", "apple", "banana", "apple");
Map<String, Long> wordCounts = words.stream()
                .flatMap(word -> Arrays.stream(word.split("\\s+")))
                .collect(Collectors.groupingBy(String::toLowerCase, Collectors.counting()));
System.out.println("單詞出現(xiàn)次數(shù):" + wordCounts);
  1. 將一個(gè)整數(shù)列表按照指定的規(guī)則進(jìn)行分組:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Map<Integer, List<Integer>> groupedNumbers = numbers.stream()
                .collect(Collectors.groupingBy(n -> (n - 1) % 3));
System.out.println("分組結(jié)果:" + groupedNumbers);
  1. 對(duì)一個(gè)用戶(hù)列表按照年齡進(jìn)行降序排序:
List<User> users = Arrays.asList(new User("Alice", 25), new User("Bob", 30), new User("Cathy", 20));
users.sort((u1, u2) -> u2.getAge() - u1.getAge());
System.out.println("按年齡降序排序的用戶(hù)列表:" + users);
  1. 對(duì)一個(gè)字符串列表進(jìn)行去重操作:
List<String> uniqueWords = Arrays.asList("apple", "banana", "orange", "apple", "banana").stream()
                .distinct()
                .collect(Collectors.toList());
System.out.println("去重后的字符串列表:" + uniqueWords);
  1. 對(duì)一個(gè)整數(shù)列表進(jìn)行前N個(gè)最大值的篩選:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int N = 3;
List<Integer> topNMaxValues = numbers.stream()
                .limit(N)
                .max(Comparator.naturalOrder())
                .collect(Collectors.toList());
System.out.println("前N個(gè)最大值:" + topNMaxValues);
  1. 對(duì)一個(gè)整數(shù)列表進(jìn)行前N個(gè)最小值的篩選:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int N = 3;
List<Integer> topNMinValues = numbers.stream()
                .limit(N)
                .min(Comparator.naturalOrder())
                .collect(Collectors.toList());
System.out.println("前N個(gè)最小值:" + topNMinValues);
  1. 對(duì)一個(gè)整數(shù)列表進(jìn)行前N個(gè)平均值的篩選:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
int N = 3;
double sum = numbers.stream()
                .limit(N)
                .reduce(0L, (a, b) -> a + b); // 先計(jì)算總和再除以N得到平均值
List<Double> topNAverageValues = numbers.stream()
                .limit(N)
                .mapToDouble(Integer::intValue) // 將整數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù)進(jìn)行計(jì)算平均值
                .sorted() // 按升序排序后取前N個(gè)平均值作為結(jié)果列表的元素
                .collect(Collectors.toList());
System.out.println("前N個(gè)平均值:" + topNAverageValues);

方法融合

我可以給您一個(gè)示例,展示如何在Java Stream中融合使用不同的方法:

假設(shè)有一個(gè)User類(lèi),包含name(姓名)、age(年齡)和score(分?jǐn)?shù))屬性。我們使用Java Stream來(lái)對(duì)一組User對(duì)象進(jìn)行操作。

List<User> users = ... // 獲取User列表

// 示例1: 過(guò)濾、排序并限制結(jié)果數(shù)量
List<String> names = users.stream()
    .filter(user -> user.getAge() >= 18) // 過(guò)濾年齡大于等于18歲的用戶(hù)
    .sorted(Comparator.comparing(User::getScore).reversed()) // 按照分?jǐn)?shù)降序排序
    .limit(5) // 限制結(jié)果數(shù)量為5個(gè)
    .map(User::getName) // 提取姓名字段
    .collect(Collectors.toList());

System.out.println(names); // 打印結(jié)果

// 示例2: 分組、求和、統(tǒng)計(jì)
Map<Integer, Long> ageCountMap = users.stream()
    .collect(Collectors.groupingBy(User::getAge, Collectors.counting())); // 按照年齡分組并統(tǒng)計(jì)數(shù)量

int totalScore = users.stream()
    .mapToInt(User::getScore) // 轉(zhuǎn)換成IntStream
    .sum(); // 求和

System.out.println(ageCountMap);
System.out.println(totalScore);

// 示例3: 映射、去重
Set<String> uniqueNames = users.stream()
    .map(User::getName) // 提取姓名字段
    .distinct() // 去重
    .collect(Collectors.toSet()); // 轉(zhuǎn)換為Set集合

System.out.println(uniqueNames);

// 示例4: 并行處理
int totalAge = users.parallelStream()
    .mapToInt(User::getAge)
    .sum();

System.out.println(totalAge);

以上示例展示了不同的Stream方法的融合應(yīng)用,如過(guò)濾(filter)、排序(sorted)、限制(limit)、映射(map)、分組(groupingBy)、求和(sum)、去重(distinct)等。您可以根據(jù)需求,在您的項(xiàng)目中融合使用這些方法來(lái)處理數(shù)據(jù)。如果有具體的問(wèn)題或需求,歡迎繼續(xù)向我提問(wèn)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-540489.html

到了這里,關(guān)于Java使用Stream API對(duì)于數(shù)據(jù)列表經(jīng)常處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java通過(guò)stream流的形式把列表中某個(gè)字段的值取出并生成列表

    可以使用Java 8中引入的Stream API來(lái)實(shí)現(xiàn)這一功能。例如,假設(shè)你有一個(gè)類(lèi)名為Person的列表,并且你想要從這個(gè)列表中提取所有人的姓名并生成一個(gè)新的列表。你可以這樣做: 這段代碼首先使用 stream() 方法將列表轉(zhuǎn)換為流。然后,使用 map() 方法對(duì)流中的每個(gè)元素執(zhí)行一個(gè)轉(zhuǎn)換函

    2024年02月12日
    瀏覽(24)
  • java用stream根據(jù)實(shí)體的某個(gè)屬性對(duì)列表進(jìn)行排序

    用stream流根據(jù)實(shí)體的某個(gè)屬性對(duì)列表進(jìn)行排序 假設(shè)有一個(gè)實(shí)體類(lèi) Person,包含兩個(gè)屬性 name 和 age,你可以使用 stream 流的 sorted() 方法來(lái)按照某兩個(gè)字段進(jìn)行排序。以下是一個(gè)示例代碼: 在上述代碼中,我們將 personList 轉(zhuǎn)換成流后,調(diào)用了 sorted() 方法,并且使用 Comparator 的

    2024年02月06日
    瀏覽(91)
  • Java 8:Stream API 流式操作

    Java 8:Stream API 流式操作

    ??wei_shuo的個(gè)人主頁(yè) ??wei_shuo的學(xué)習(xí)社區(qū) ??Hello World ! Java 8 中的 Stream API 是一組用于對(duì)集合數(shù)據(jù)進(jìn)行處理的新特性;提供一種以聲明式風(fēng)格對(duì)集合進(jìn)行操作的方式,簡(jiǎn)化集合的處理,使得代碼更加簡(jiǎn)潔、優(yōu)雅,并且能夠更高效地處理數(shù)據(jù); 這種風(fēng)格將要處理的元素集合看

    2024年02月13日
    瀏覽(14)
  • 【Java系列】深入解析Stream API

    【Java系列】深入解析Stream API

    你只管努力,其他交給時(shí)間,時(shí)間會(huì)證明一切。 文章標(biāo)記顏色說(shuō)明: 黃色 :重要標(biāo)題 紅色 :用來(lái)標(biāo)記結(jié)論 綠色 :用來(lái)標(biāo)記論點(diǎn) 藍(lán)色 :用來(lái)標(biāo)記論點(diǎn) 希望這篇文章能讓你不僅有一定的收獲,而且可以愉快的學(xué)習(xí),如果有什么建議,都可以留言和我交流 Stream API是Java 8中最

    2024年02月10日
    瀏覽(25)
  • Java 8:Stream API 流式操作(學(xué)習(xí))

    Java 8 中的 Stream API 是一組用于對(duì)集合數(shù)據(jù)進(jìn)行處理的新特性;提供一種以聲明式風(fēng)格對(duì)集合進(jìn)行操作的方式,簡(jiǎn)化集合的處理,使得代碼更加簡(jiǎn)潔、優(yōu)雅,并且能夠更高效地處理數(shù)據(jù); 這種風(fēng)格將要處理的元素集合看作一種流, 流在管道中傳輸, 并且可以在管道的節(jié)點(diǎn)上進(jìn)

    2024年02月10日
    瀏覽(45)
  • 使用Java的stream().filter方法進(jìn)行數(shù)據(jù)篩選

    在Java中,Stream是一個(gè)非常強(qiáng)大的工具,用于處理集合數(shù)據(jù)。Stream提供了一系列的操作,使我們能夠輕松地對(duì)數(shù)據(jù)進(jìn)行篩選、轉(zhuǎn)換和處理。其中, filter 方法是Stream中的一個(gè)關(guān)鍵操作,它允許我們根據(jù)給定的條件篩選出符合條件的元素。 在本文中,我們將深入探討Java中 Stream

    2024年02月07日
    瀏覽(55)
  • Java8 Stream分組groupBy后,取單一字段值、取列表第一個(gè)值方式

    java8 Stream中g(shù)roupBy的拓展用法。 取單一字段值、取列表第一個(gè)值方式

    2024年02月14日
    瀏覽(21)
  • java8 列表通過(guò) stream流 根據(jù)對(duì)象屬性去重的三種實(shí)現(xiàn)方法

    java8 列表通過(guò) stream流 根據(jù)對(duì)象屬性去重的三種實(shí)現(xiàn)方法

    0、User對(duì)象 1、使用filter進(jìn)行去重 測(cè)試 ①、疑惑 既然 filter 里面調(diào)用的是 distinctPredicate 方法,而該方法每次都 new 一個(gè)新的 map 對(duì)象,那么 map 就是新的,怎么能做到可以過(guò)濾呢 ②、解惑 先看一下 filter 的部分實(shí)現(xiàn)邏輯,他使用了函數(shù)式接口 Predicate ,每次調(diào)用filter時(shí),會(huì)使用

    2024年01月20日
    瀏覽(431)
  • Java 8 中的 Stream API - map() 方法詳解

    摘要: Java 8 中的 Stream API 提供了一種新的處理集合和數(shù)組的方式,可以使代碼更加簡(jiǎn)潔、易讀,同時(shí)還可以提高性能。其中 map() 方法是比較常用的方法之一,它可以將 Stream 對(duì)象中的每個(gè)元素映射為另一個(gè)元素。本文將對(duì) Java 8 中的 Stream API 和 map() 方法進(jìn)行詳細(xì)介紹,并通

    2024年04月09日
    瀏覽(24)
  • Java Stream中的API你都用過(guò)了嗎?

    公眾號(hào)「架構(gòu)成長(zhǎng)指南」,專(zhuān)注于生產(chǎn)實(shí)踐、云原生、分布式系統(tǒng)、大數(shù)據(jù)技術(shù)分享。 在本教程中,您將通過(guò)大量示例來(lái)學(xué)習(xí) Java 8 Stream API。 Java 在 Java 8 中提供了一個(gè)新的附加包,稱(chēng)為 java.util.stream 。該包由類(lèi)、接口和枚舉組成,允許對(duì)元素進(jìn)行函數(shù)式操作。 您可以通過(guò)在

    2024年02月05日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包