数组与集合类

191 阅读1分钟

数组初始化

Arrays.fill();

数组求和

Arrays.stream(nums).sum();

一. int[ ]转化

1.1、int[ ] 转 List< Integer >

public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; List list = Arrays.stream(arr).boxed().collect(Collectors.toList()); list.forEach(e -> System.out.print(e + " ")); }

  • Arrays.stream(arr) 将int数组转化为IntStream
  • boxed() 将每一个整数进行装箱,把IntStream 转换成了 Stream< Integer >
  • collect(Collectors.toList()) 将对象流收集为集合,转化为 List< Integer >

1.2、int[ ] 转 Integer[ ]

Integer[] integers = Arrays.stream(arr).boxed().toArray(Integer[]::new);

  • Arrays.stream(arr) 还是转化为流
  • boxed() 装箱,将基本类型流转换为对象流
  • toArray(Integer[ ]::new) 将对象流转换为对象数组

二、Integer[ ]转化

2.1、Integer[ ]转 int[ ]

int[] arr= Arrays.stream(integers).mapToInt(Integer::valueOf).toArray();

1.2 List转普通的int[]数组

2.2、Integer[ ]转 List

Integer[] integers = {1,2,3,4,5}; List list = Arrays.asList(integers);

三、List< Integer >

3.1、List< Integer > 转 Integer[ ]

Integer[] integers = list.toArray(new Integer[list.size()]);

3.2、List< Integer > 转 int[ ]

int[] arr2 = list.stream().mapToInt(Integer::valueOf).toArray(); array = ans.stream() .mapToInt(Integer::intValue) .toArray(); List转包装类数组

四、ArrayDeque与LinkedLIst

  1. 日常使用LinkedList快于ArrayDeque, 数据结构角度上, ArrayDeque基于数组的循环队列
  2. 实现Queue与Deque时,offer与add一个为null的数会报空指针异常
  3. image.png
  4. ArrayDeque满时扩容需要消耗更多时间进行数组复制

五、两个List映射成一个Map

List<String> list1 = new ArrayList<>(Arrays.asList("aa", "bb", "cc", "dd", "ee"));
        List<Double> list2 = new ArrayList<>(Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0));
        Map<String, Double> map = IntStream.range(0, list1.size()).collect(HashMap::new, (m, i) -> m.put(list1.get(i), list2.get(i)), HashMap::putAll);