最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?mapToInt()方法使用小結(jié)

 更新時間:2025年11月24日 10:18:54   作者:Geoking.  
本文介紹了Java?8中Stream?API中的mapToInt()方法,它可以將對象流轉(zhuǎn)換為整型流,從而方便地進行求和、求平均值、求最大值/最小值等操作,具有一定的參考價值,感興趣的可以了解一下

一、用途

在 Java 8 引入 Stream API 之后,集合處理變得更函數(shù)式、更簡潔。
在處理對象集合時經(jīng)常需要把對象中的某個字段(年齡、數(shù)量、價格等)提取成整型流(IntStream),以便:

  • 快速求和(sum()
  • 求平均值(average()
  • 求最大值/最小值(max() / min()
  • 轉(zhuǎn)換為基本類型數(shù)組(toArray()

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

二、什么是mapToInt()?

mapToInt()Stream 接口中的一個終極武器,它可以將 Stream 轉(zhuǎn)換為 IntStream。

方法簽名如下:

IntStream mapToInt(ToIntFunction<? super T> mapper);

功能總結(jié):

將對象流中的元素映射為 int 類型,返回 IntStream。

三、mapToInt()有什么用?

1. 將對象集合轉(zhuǎn)換為整型流

例如:把 List<Person> 中的年齡轉(zhuǎn)換為 IntStream

2. 使用 IntStream 的快速計算

例如:

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

這些是普通 Stream 沒有的強大方法。

3. 避免自動裝箱 / 拆箱,提高性能

IntStream 是基礎(chǔ)類型流,不涉及 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

五、典型應(yīng)用場景

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. 轉(zhuǎn)為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()的區(qū)別

方法返回類型用途
map()Stream<R>返回對象流
mapToInt()IntStream返回整型流,適合數(shù)學(xué)計算

示例:

Stream<Integer> stream1 = people.stream()
        .map(Person::getAge); // 裝箱 Integer,不適合大量計算

IntStream stream2 = people.stream()
        .mapToInt(Person::getAge); // 基本類型 int 流,高性能

八、實戰(zhàn)案例:計算商品總價格

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

到此這篇關(guān)于Java mapToInt()方法詳解的文章就介紹到這了,更多相關(guān)Java mapToInt()內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

龙岩市| 修文县| 太原市| 洛浦县| 苍山县| 公主岭市| 疏勒县| 晋城| 鸡泽县| 望都县| 杂多县| 青海省| 寿阳县| 新巴尔虎左旗| 彭山县| 化隆| 呼和浩特市| 乌拉特前旗| 宜兴市| 大同县| 山阳县| 临夏市| 遂平县| 新平| 鲁山县| 芮城县| 柳河县| 乐至县| 枣庄市| 吴堡县| 白河县| 拜泉县| 共和县| 城口县| 嫩江县| 旅游| 岳阳县| 阿拉善右旗| 丰城市| 八宿县| 德化县|