首页 > 编程语言 >Java中数组、集合初始化及遍历方式

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

时间:2022-11-28 16:56:28浏览次数:42  
标签:初始化 遍历 Java int list System println array out

一、数组

1. 一维数组

一维数组两种初始化方式

  • 静态初始化

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

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

一维数组两种遍历方式

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

2.二维数组

二维数组两种初始化方式

  • 静态初始化

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

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

二维数组两种遍历方式

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

二、集合

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");
    
  • 双花括号初始化
    List<String> list = new ArrayList<String>() {{
    	add("1");
    	add("2");
    	add("3");
    }};
    
  • Arrays.asList
    List<String> list = Arrays.asList("1","2","3");
    
  • Stream
    List<String> list = Stream.of("1","2","3").collect(Collectors.toList());
    
  • Java9新特性,使用List.of,生成不可变集合
    List<String> list = List.of("1","2","3");
    

List5种遍历方式

  • 普通for循环

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

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

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

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

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

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");
    
  • Java8新特性,双花括号初始化

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

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

Map5种遍历方式

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

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

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

    for (String value : map.values()) {
    	System.out.println("value= " + value);
    }
    
  • 迭代器(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());
    }
    
  • forEach

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

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

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

    	map.entrySet().parallelStream().forEach(entry -> {
    		System.out.println("key= " + entry.getKey() + " value= " + entry.getValue());
    	});

标签:初始化,遍历,Java,int,list,System,println,array,out
From: https://www.cnblogs.com/huozhonghun/p/16932624.html

相关文章

  • Java语言程序设计第六讲,流与文件
    这次知识点总结拖了好久QWQ因为没有找到相关文件(.java文件之类的资料),这次的总结会比之前的简略很多 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数......
  • Java工程师常见面试题分享
    Java工程师常见面试题目汇总!我们想要成为Java工程师首先会经过各种面试,面试就离不开面试题目,今天来和大家分享一下10个Java工程师面试题目!1、静态加载和动态加载有什么区别......
  • JAVA面试题
    1Synchronized锁升级的原理答:Synchronized在jdk1.6之前是通过重量级锁的方式实现。重量级锁底层是通过MutexLock来实现互斥锁的一个功能,Mutex是系统方法,调用的时候用户......
  • .crt证书转成.pem格式 JAVA实现
    背景知识介绍图是网上找到,链接:https://www.zhihu.com/question/29620953需求.crt和.pem后缀的都是证书,只是需要用不同的工具才能查看里面的内容,理解是不同的编码......
  • 力扣209(java&python)-长度最小的子数组(中等)
    题目:给定一个含有 n 个正整数的数组和一个正整数target。找出该数组中满足其和≥target的长度最小的连续子数组 [numsl,numsl+1,...,numsr-1,numsr],并返回......
  • 从JMM模型复盘Java多线程
    从JMM模型复盘Java多线程多线程的由来任何事情都是有一个发展的历程,多线程也是,我们聊聊多线程的历史。最开始的时候什么都没有,只有CPU和磁盘的概念。之后人们觉得CPU......
  • Java 注解和反射(四)Java内存分析
     类的加载过程 类的加载与ClassLoader的理解加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法去区的运行时数据结构,然后生成一个代表这个......
  • 关于Compilation failed: internal java compiler error的解决方法(Idea)
    关于Compilationfailed:internaljavacompilererror的解决方法(Idea)idea编译项目时出现java:Compilationfailed:internaljavacompilererrorjava:编译失败:内部j......
  • Java线程中断的本质深入理解
      Java的中断是一种协作机制。也就是说调用线程对象的interrupt方法并不一定就中断了正在运行的线程,它只是要求线程自己在合适的时机中断自己。一、Java中断的现象 首先,......
  • java.lang.Exception: DEBUG -- CLOSE BY CLIENT STACK TRACE 的理解
    [2013-12-0611:06:21,715][C3P0PooledConnectionPoolManager[identityToken->2tl0n98y1iwg7cbdzzq7a|719f1f]-HelperThread-#2]DEBUG-com.mchange.v2.c3p0.impl.NewPoo......