一、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());
}
}
}