java刷题笔记24/6/6

一、int与Integer两种类型的自动拆装箱与手动拆装箱

1.自动装箱(Autoboxing)

int primitiveInt = 42;
Integer integerObject = primitiveInt; // 自动装箱

2.Integer类的构造方法手动装箱

int primitiveInt = 42;
Integer integerObject = new Integer(primitiveInt); // 不推荐使用,构造方法已过时

3.Integer.valueOf方法

int primitiveInt = 42;
Integer integerObject = Integer.valueOf(primitiveInt); // 推荐使用

二、将int类型的数组转为Integer类型

1.Arrays.stream和boxed方法

int[] intArray = {1, 2, 3, 4, 5};
Integer[] integerArray = Arrays.stream(intArray).boxed().toArray(Integer[]::new);

2.for循环手动转换

int[] intArray = {1, 2, 3, 4, 5};
Integer[] integerArray = new Integer[intArray.length];
for (int i = 0; i < intArray.length; i++) {
    integerArray[i] = Integer.valueOf(intArray[i]);
}

3.Arrays类的forEach方法

int[] intArray = {1, 2, 3, 4, 5};
Integer[] integerArray = new Integer[intArray.length];
Arrays.setAll(integerArray, i -> intArray[i]);

4.IntStream类的mapToObj方法

int[] intArray = {1, 2, 3, 4, 5};
Integer[] integerArray = IntStream.of(intArray).boxed().toArray(Integer[]::new);

三、实现对array降序排序

升序:
Arrays.sort(arr)

降序:
第一步:将int类型转为Integer
第二步:使用Collections.reverseOrder()

        // Step 1: 将 int 数组转换为 Integer 数组
        Integer[] integerArray = Arrays.stream(arr).boxed().toArray(Integer[]::new);

        // Step 2: 使用 Arrays.sort 并传入自定义 Comparator 实现降序排序
        Arrays.sort(integerArray, Collections.reverseOrder());

        // Step 3: 如果需要,可以将排序后的 Integer 数组转换回 int 数组
        arr = Arrays.stream(integerArray).mapToInt(Integer::intValue).toArray();

四、根据键/值的大小对map排序

1.根据键升序:

treemap就行了

2.根据键降序

创建TreeMap时传入一个自定义的Comparator

TreeMap<Integer, String> treeMap = new TreeMap<>(Comparator.reverseOrder());

3.根据值升序/降序:

1.将Map的entrySet转换为一个List。
2.使用Comparator对这个List进行升序排序(降序依旧是用Collections.reverseOrder())。
3.将排序后的结果存储到一个新的LinkedHashMap中,以保持插入顺序。

import java.util.*;

public class Main {
    public static void main(String[] args) {
        // 创建一个示例的 Map
        Map<String, Integer> map = new HashMap<>();
        map.put("Alice", 3);
        map.put("Bob", 1);
        map.put("Charlie", 2);

        // 按值排序
        List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
        list.sort(Map.Entry.comparingByValue());

        // 如果需要降序排序,可以使用以下行代码替换上面的排序行
        // list.sort(Map.Entry.comparingByValue(Comparator.reverseOrder()));

        // 将排序后的结果放入一个 LinkedHashMap 中
        Map<String, Integer> sortedMap = new LinkedHashMap<>();
        for (Map.Entry<String, Integer> entry : list) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }

        // 输出排序后的 Map
        for (Map.Entry<String, Integer> entry : sortedMap.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值