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

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

 更新時間:2025年11月24日 10:18:54   作者:Geoking.  
本文介紹了Java?8中Stream?API中的mapToInt()方法,它可以將對象流轉(zhuǎn)換為整型流,從而方便地進(jì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 沒有的強(qiáng)大方法。

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 表達(dá)式

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

int total = people.stream()
        .mapToInt(p -> p.getAge())
        .sum();

但一般用方法引用更方便,這是 Java 8 引入的方法引用(Method Reference),它是一種簡化 Lambda 表達(dá)式的語法形式。

七、與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)文章

最新評論

双鸭山市| 台州市| 蕉岭县| 岢岚县| 甘南县| 开原市| 泾阳县| 湘阴县| 缙云县| 镇远县| 大悟县| 乌恰县| 淳化县| 长治市| 平顶山市| 全南县| 阿合奇县| 长岭县| 南涧| 乌兰察布市| 乐都县| 平果县| 屏边| 南城县| 达州市| 额济纳旗| 施甸县| 应用必备| 太白县| 大庆市| 浙江省| 九寨沟县| 香港 | 高唐县| 凤庆县| 平江县| 延长县| 彰化县| 巴东县| 格尔木市| 运城市|