• 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
  • 相关阅读:
    开源一个教学型分库分表示例项目 shardingsphere-jdbc-demo
    【Dockerfile】基于openjdk镜像添加常用命令工具
    基于云的 LDAP 目录服务和本地 LDAP 相比有哪些优势?
    为什么路由器属于网络层
    【C++】异常 & 智能指针
    【Spring Cloud】Nacos 配置管理详解
    10分钟教对象搭建了一个多人聊天室~
    网络安全(黑客)自学
    PDF文件如何编辑?这两种方法是我一直在用的
    打造一套属于自己的php开发框架(一)封装Db类
  • 原文地址:https://blog.csdn.net/qq_36433289/article/details/127914977