Java在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
java-BigDecimal运算保留两位小数更准确,符合四舍五入 发布于:2024-04-19 21:39 dfsd ds东方闪电的发生发多少发多少多少发生的大多数f第三方多少 发布于:2024-04-18 14:12 我的第一个测试程序 发布于:2024-04-17 21:29 1-2020中含有2的数字 发布于:2024-04-12 21:26 转换大小写 发布于:2024-04-12 20:53 阶乘相加求和,保留后9位 发布于:2024-04-12 15:10 计数器计数 发布于:2024-04-11 21:41 类变量赋值方法 发布于:2024-04-11 21:27 希尔排序算法 发布于:2024-04-11 09:10 二分法查找 发布于:2024-04-11 08:57 冒泡排序算法 发布于:2024-04-10 11:14 代码片段-正则表达式提取特定文本 发布于:2024-04-02 17:58 Java代码 发布于:2024-03-30 17:02 三角形判定 发布于:2024-03-29 10:34 1hello world 发布于:2024-03-27 00:30 jia fa ji suan 发布于:2024-03-21 16:11 sudoku solver (not completed) 发布于:2024-03-16 23:48 java第一次作业 发布于:2024-03-15 00:22 获取个十百 发布于:2024-03-14 23:38 MD5编码规则 与时间格式化 发布于:2024-03-13 14:18 传递继承的示例 发布于:2024-03-12 18:10 斐波那契数列 发布于:2024-03-12 17:36 DS 代码示例保存。 发布于:2024-03-06 08:47 测试功能运行 发布于:2024-03-04 17:18 写出一个完整的声明复数类的iava程序输入2个括号字符串如 (1,2) (34) 发布于:2024-03-03 20:16 这是数据科学与算法 发布于:2024-02-28 02:04 健康和健康很快就会健康和健康 发布于:2024-02-26 16:45 人员信息匹配 发布于:2024-02-24 18:00 构造方法使用 发布于:2024-02-24 16:25 方法的重载 发布于:2024-02-22 12:50 迷宫老鼠问题 发布于:2024-02-21 16:33 类与对象的使用 发布于:2024-02-21 15:32 撒地方大师傅 发布于:2024-02-19 11:16 我的测试代码 发布于:2024-02-19 10:19 java AES 加密 发布于:2024-02-18 16:47 插入元素排序 发布于:2024-02-18 12:42 打印杨辉三角形 发布于:2024-02-18 10:46 冒泡排序法 发布于:2024-02-17 22:28 为数组添加新元素 发布于:2024-02-17 18:21 数组的使用 发布于:2024-02-16 20:21 1-1/2..求和 发布于:2024-02-15 19:58 大小写字母 发布于:2024-02-15 19:45 输出不被5整除的数 发布于:2024-02-15 18:48 提示登陆成功 发布于:2024-02-15 17:21 打印空心金字塔 发布于:2024-02-15 15:52 乘法口诀表 发布于:2024-02-15 14:31 for循环的嵌套使用 发布于:2024-02-15 13:51 dowhile循环的使用 发布于:2024-02-15 13:21 for循环count 发布于:2024-02-15 11:55 switch判断成绩合格 发布于:2024-02-15 11:17 [更多]
显示目录

Java 8 – Stream Collectors groupingBy 示例



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

在这篇教程中,将向你展示如何使用Java 8 Stream的Collectors,来对一个List进行分组,计算个数,求和以及排序。

1. Group By, Count and Sort

1.1 对一个List进行分组,并显示每组的个数

Java8Example1.java

package com.mkyong.java8;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Java8Example1 {

    public static void main(String[] args) {

        //3 apple, 2 banana, others 1
        List<string> items =
                Arrays.asList("apple", "apple", "banana",
                        "apple", "orange", "banana", "papaya");

        Map<string, long=""> result =
                items.stream().collect(
                        Collectors.groupingBy(
                                Function.identity(), Collectors.counting()
                        )
                );

        System.out.println(result);


    }
}

output

{
    papaya=1, orange=1, banana=2, apple=3
}

1.2 加入排序

Java8Example2.java

package com.mkyong.java8;

import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

public class Java8Example2 {

    public static void main(String[] args) {

        //3 apple, 2 banana, others 1
        List<string> items =
                Arrays.asList("apple", "apple", "banana",
                        "apple", "orange", "banana", "papaya");

        Map<string, long=""> result =
                items.stream().collect(
                        Collectors.groupingBy(
                                Function.identity(), Collectors.counting()
                        )
                );

        Map<string, long=""> finalMap = new LinkedHashMap&lt;&gt;();

        //Sort a map and add to finalMap
        result.entrySet().stream()
                .sorted(Map.Entry.<string, long="">comparingByValue()
                        .reversed()).forEachOrdered(e -&gt; finalMap.put(e.getKey(), e.getValue()));

        System.out.println(finalMap);


    }
}

output

{
    apple=3, banana=2, papaya=1, orange=1
}

2. List Objects

对用户定义的对象数组进行分组的例子。

2.1 一个简单java对象.

Item.java

package com.mkyong.java8;

import java.math.BigDecimal;

public class Item {

    private String name;
    private int qty;
    private BigDecimal price;

    //constructors, getter/setters 
}

2.2 通过name属性分组,并显示分组个数或Qty属性的数量

Java8Examples3.java

package com.mkyong.java8;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Java8Examples3 {

    public static void main(String[] args) {

        //3 apple, 2 banana, others 1
        List<item> items = Arrays.asList(
                new Item("apple", 10, new BigDecimal("9.99")),
                new Item("banana", 20, new BigDecimal("19.99")),
                new Item("orang", 10, new BigDecimal("29.99")),
                new Item("watermelon", 10, new BigDecimal("29.99")),
                new Item("papaya", 20, new BigDecimal("9.99")),
                new Item("apple", 10, new BigDecimal("9.99")),
                new Item("banana", 10, new BigDecimal("19.99")),
                new Item("apple", 20, new BigDecimal("9.99"))
        );

        Map<string, long=""> counting = items.stream().collect(
                Collectors.groupingBy(Item::getName, Collectors.counting()));

        System.out.println(counting);

        Map<string, integer=""> sum = items.stream().collect(
                Collectors.groupingBy(Item::getName, Collectors.summingInt(Item::getQty)));

        System.out.println(sum);

    }
}

output

//Group by + Count
{
    papaya=1, banana=2, apple=3, orang=1, watermelon=1
}

//Group by + Sum qty
{
    papaya=20, banana=30, apple=40, orang=10, watermelon=10
}

2.2 通过Price分组 – 使用Collectors.groupingByCollectors.mapping 的例子.

Java8Examples4.java

package com.mkyong.java8;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

public class Java8Examples4 {

    public static void main(String[] args) {

        //3 apple, 2 banana, others 1
        List<item> items = Arrays.asList(
                new Item("apple", 10, new BigDecimal("9.99")),
                new Item("banana", 20, new BigDecimal("19.99")),
                new Item("orang", 10, new BigDecimal("29.99")),
                new Item("watermelon", 10, new BigDecimal("29.99")),
                new Item("papaya", 20, new BigDecimal("9.99")),
                new Item("apple", 10, new BigDecimal("9.99")),
                new Item("banana", 10, new BigDecimal("19.99")),
                new Item("apple", 20, new BigDecimal("9.99"))
                );

        //group by price
        Map<BigDecimal, List<Item>> groupByPriceMap = 
            items.stream().collect(Collectors.groupingBy(Item::getPrice));

        System.out.println(groupByPriceMap);

        // group by price, uses 'mapping' to convert List<Item> to Set<String>
        Map<BigDecimal, Set<String>> result =
                items.stream().collect(
                        Collectors.groupingBy(Item::getPrice,
                                Collectors.mapping(Item::getName, Collectors.toSet())
                        )
                );

        System.out.println(result);

    }
}

output

{
    19.99=[
            Item{name='banana', qty=20, price=19.99}, 
            Item{name='banana', qty=10, price=19.99}
        ], 
    29.99=[
            Item{name='orang', qty=10, price=29.99}, 
            Item{name='watermelon', qty=10, price=29.99}
        ], 
    9.99=[
            Item{name='apple', qty=10, price=9.99}, 
            Item{name='papaya', qty=20, price=9.99}, 
            Item{name='apple', qty=10, price=9.99}, 
            Item{name='apple', qty=20, price=9.99}
        ]
}

//group by + mapping to Set
{
    19.99=[banana], 
    29.99=[orang, watermelon], 
    9.99=[papaya, apple]
}

References

  1. Java 8 Stream Collectors JavaDoc
  2. Java – How to sort a Map
  3. [Stackoverflow – Sort a Map by values (Java) ][Stackoverflow _ Sort a Map by values Java]

[Stackoverflow _ Sort a Map by values Java]: http://stackoverflow.com/questions/109383/sort-a-mapkey-value-by-values-java

由JSRUN为你提供的Java在线运行、在线编译工具
        JSRUN提供的Java 在线运行,Java 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout