当前位置: 代码网 > it编程>编程语言>Java > Java mapToInt()方法使用小结

Java mapToInt()方法使用小结

2025年11月24日 Java 我要评论
一、用途在 java 8 引入 stream api 之后,集合处理变得更函数式、更简洁。在处理对象集合时经常需要把对象中的某个字段(年龄、数量、价格等)提取成整型流(intstream),以便:快速

一、用途

在 java 8 引入 stream api 之后,集合处理变得更函数式、更简洁。
在处理对象集合时经常需要把对象中的某个字段(年龄、数量、价格等)提取成整型流(intstream),以便:

  • 快速求和(sum()
  • 求平均值(average()
  • 求最大值/最小值(max() / min()
  • 转换为基本类型数组(toarray()

要完成这些操作,最常用的方法之一就是 —— maptoint()

二、什么是maptoint()?

maptoint()stream 接口中的一个终极武器,它可以将 stream 转换为 intstream

方法签名如下:

intstream maptoint(tointfunction<? super t> mapper);

功能总结:

将对象流中的元素映射为 int 类型,返回 intstream

三、maptoint()有什么用?

1. 将对象集合转换为整型流

例如:把 list<person> 中的年龄转换为 intstream

2. 使用 intstream 的快速计算

例如:

  • .sum()
  • .average()
  • .max()
  • .min()
  • .toarray()

这些是普通 stream 没有的强大方法。

3. 避免自动装箱 / 拆箱,提高性能

intstream 是基础类型流,不涉及 integer 的装箱操作,性能更高。

四、基本用法示例

示例:提取对象字段为整型流

class person {
    private string name;
    private int age;
    
    person(string name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public int getage() {
        return age;
    }
}

public class demo {
    public static void main(string[] args) {
        list<person> people = list.of(
            new person("tom", 18),
            new person("jerry", 20),
            new person("alice", 22)
        );

        intstream ages = people.stream()
                .maptoint(person::getage);

        ages.foreach(system.out::println);
    }
}

输出:

18
20
22

五、典型应用场景

1. 求和:sum()

int totalage = people.stream()
        .maptoint(person::getage)
        .sum();

system.out.println(totalage); // 60

2. 求平均值:average()

double avgage = people.stream()
        .maptoint(person::getage)
        .average()
        .orelse(0);

system.out.println(avgage); // 20.0

3. 求最大值 / 最小值

int maxage = people.stream()
        .maptoint(person::getage)
        .max()
        .orelse(-1);

int minage = people.stream()
        .maptoint(person::getage)
        .min()
        .orelse(-1);

system.out.println(maxage); // 22
system.out.println(minage); // 18

4. 转为int[]

int[] arr = people.stream()
        .maptoint(person::getage)
        .toarray();

system.out.println(arrays.tostring(arr));
// 输出: [18, 20, 22]

六、使用 lambda 表达式

除了方法引用,也可以使用 lambda:

int total = people.stream()
        .maptoint(p -> p.getage())
        .sum();

但一般用方法引用更方便,这是 java 8 引入的方法引用(method reference),它是一种简化 lambda 表达式的语法形式。

七、与map()的区别

方法返回类型用途
map()stream<r>返回对象流
maptoint()intstream返回整型流,适合数学计算

示例:

stream<integer> stream1 = people.stream()
        .map(person::getage); // 装箱 integer,不适合大量计算

intstream stream2 = people.stream()
        .maptoint(person::getage); // 基本类型 int 流,高性能

八、实战案例:计算商品总价格

class item {
    private string name;
    private int price;

    item(string name, int price) {
        this.name = name;
        this.price = price;
    }

    public int getprice() {
        return price;
    }
}

public class demo {
    public static void main(string[] args) {
        list<item> items = list.of(
            new item("book", 30),
            new item("pen", 5),
            new item("bag", 60)
        );

        int totalprice = items.stream()
                .maptoint(item::getprice)
                .sum();

        system.out.println("总价格:" + totalprice);
    }
}

输出:

总价格:95

到此这篇关于java maptoint()方法详解的文章就介绍到这了,更多相关java maptoint()内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com