• Java中数组、集合初始化及遍历方式


    一、数组

    1. 一维数组

    一维数组两种初始化方式

    • 静态初始化

      int[] array = {1,2,3};
      
      • 1
      int[] array = new int[]{1,2,3};
      
      • 1
    • 动态初始化

      int[] array = new int[3];
      array[0]=1;
      array[1]=2;
      array[2]=3;
      
      • 1
      • 2
      • 3
      • 4

    一维数组两种遍历方式

    • 普通for循环
      for (int i = 0; i < array.length; i++) {
      	System.out.println(array[i]);
      }
      
      • 1
      • 2
      • 3
    • 增强for循环
      for (int data : array) {
      	System.out.println(data);
      }
      
      • 1
      • 2
      • 3

    2.二维数组

    二维数组两种初始化方式

    • 静态初始化

      int[][] array = {{1,2},{3,4}};
      
      • 1
      int[][] array = new int[][]{{1,2},{3,4}};
      
      • 1
    • 动态初始化

      int[][] array = new int[2][1];
      array[0][1]=1;
      
      • 1
      • 2
      // 定义两个一维数组,每个一维数组长度待定
      int[][] array = new int[2][];
      // 必须事先分配长度,才可以访问
      array[0] = new int[1]; 
      array[0][0] = 1;
      array[1] = new int[2];
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    二维数组两种遍历方式

    • 普通for循环
      for (int i = 0; i < array.length; i++) {
      	for (int j = 0; j < array[i].length; j++) {
      		System.out.println(array[i][j]);
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 增强for循环
      for (int[] ints : array) {
      	for (int data : ints) {
      		System.out.println(data);
      	}
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5

    二、集合

    Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。

    图引用:https://www.runoob.com/java/java-collections.html

    在这里插入图片描述

    1.Collection

    Collection包含List、Set、Queue,下面以List为例

    List5种初始化方式

    • 创建List,使用List.add方法初始化
      List<String> list = new ArrayList();
      list.add("a");
      list.add("b");
      list.add("c");
      
      • 1
      • 2
      • 3
      • 4
    • 双花括号初始化
      List<String> list = new ArrayList<String>() {{
      	add("1");
      	add("2");
      	add("3");
      }};
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • Arrays.asList
      List<String> list = Arrays.asList("1","2","3");
      
      • 1
    • Stream
      List<String> list = Stream.of("1","2","3").collect(Collectors.toList());
      
      • 1
    • Java9新特性,使用List.of,生成不可变集合
      List<String> list = List.of("1","2","3");
      
      • 1

    List5种遍历方式

    • 普通for循环

      for (int i = 0; i < list.size(); i++) {
      	System.out.println(list.get(i));
      }
      
      • 1
      • 2
      • 3
    • 增强for循环

      for (String s : list) {
      		System.out.println(s);
      }
      
      • 1
      • 2
      • 3
    • 迭代器
      该方法可以不用担心在遍历的过程中会超出集合的长度

      	Iterator<String> ite = list.iterator();
      	while (ite.hasNext())
      	{
      		System.out.println(ite.next());
      	}
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • forEach

      list.forEach(System.out::println);
      
      • 1
      list.forEach(p -> {
      	System.out.println(p);
      });
      
      • 1
      • 2
      • 3
    • Java8新特性,Stream流

      list.stream().forEach(System.out::println);
      
      • 1
      list.stream().forEach(p -> {
      	System.out.println(p);
      });
      
      • 1
      • 2
      • 3

    2.Map

    Map3种初始化方式

    • 新建Map,使用Map.put初始化

      Map<String, String> map = new HashMap<String, String>();
      map.put("1", "a");
      map.put("2", "b");
      map.put("3", "c");
      
      • 1
      • 2
      • 3
      • 4
    • Java8新特性,双花括号初始化

      Map<String, String> map = new HashMap<String, String>() {{
      	put("1", "a");
      	put("2", "b");
      	put("3", "c");
      }};
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • Java9新特性,Map.of生成不可变集合

      Map<String, String> map = Map.of("1,"a","2","b","3","c");
      
      • 1

    Map5种遍历方式

    • Map.entrySet遍历
      推荐,尤其是大容量的情况下

      for (Map.Entry<String, String> entry : map.entrySet()) {
      	System.out.println("key= " + entry.getKey() + " value= " + entry.getValue());
      }
      
      • 1
      • 2
      • 3
    • Map.keySet遍历
      获取键,然后二次取值

      for (String key : map.keySet()) {
      	System.out.println("key= "+ key + " value= " + map.get(key));
      }
      
      • 1
      • 2
      • 3
    • Map.values遍历
      只能遍历所有value,拿不到key

      for (String value : map.values()) {
      	System.out.println("value= " + value);
      }
      
      • 1
      • 2
      • 3
    • 迭代器(Iterator)
      不能在遍历中使用集合map.remove()来删除数据,但可以使用迭代器的iterator.remove()来删除数据,数据安全

      Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
      while (iterator.hasNext()) {
      	Map.Entry<String, String> entry = iterator.next();
      	System.out.println("key= " + entry.getKey() + " value= " + entry.getValue());
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • forEach

      map.forEach((k, v) -> System.out.println("key= " + k + " value= " + v));
      
      • 1
    • Java8中,Stream流
      单线程

      	map.entrySet().stream().forEach(entry -> {
      		System.out.println("key= " + entry.getKey() + " value= " + entry.getValue());
      	});
      
      • 1
      • 2
      • 3

      多线程,能够充分利用多核CPU的优势,底层是基于ForkJoinPool

      	map.entrySet().parallelStream().forEach(entry -> {
      		System.out.println("key= " + entry.getKey() + " value= " + entry.getValue());
      	});
      
      • 1
      • 2
      • 3
  • 相关阅读:
    C++ 如何根据地理坐标范围获取瓦片地图并使用CImage库实现多张图片(瓦片地图)的快速合并
    Request和Response
    【统计模型】概率分布方法 之 事件与概率
    Android Studio的安装 环境搭建
    Python实现Matlab中的circshift函数
    Web基础与HTTP协议
    在win10命令行(cmd)中添加临时环境变量
    【音视频基础】封装格式与编码数据
    包装类和认识泛型
    张高兴的 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用
  • 原文地址:https://blog.csdn.net/qq_36433289/article/details/127914977