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

news2024/12/24 22:15:23

一、数组

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

全家桶Spring、HikariCP、Mybatis和Oracle配置,你想要的都在这里

目录1、HikariCP配置说明2、spring配置文件里&#xff0c;配置HikariCP数据库连接池3、注意连接池大小设置&#xff0c;重点推荐官方说明文档4、HikariCP配置5、数据库配置文件1、HikariCP配置说明 HikariCP: https://github.com/brettwooldridge/HikariCP 2、spring配置文件…

毕业设计-机器学习人眼检测活体检测-opencv

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

视效剧情口碑双爆棚!Netflix 现象级剧集《怪奇物语》第四季神级视效专访大揭秘!

刷新 Netflix 收视记录的超火剧集《怪奇物语》&#xff08;Stranger Things&#xff09;第四季视效剧情口碑双爆棚&#xff0c;无疑是2022年最值得一看的现象级剧集之一。第四季共九集&#xff0c;分上下两部&#xff0c;分别在今年5月和7月上线&#xff0c;目前豆瓣评分已经稳…

分享知识付费系统变现的方式_知识付费系统开发步骤

一、知识付费赚钱的方式 首先给大家讲讲知识付费赚钱的两大方式&#xff0c;大家可以根据自己的情况来选择做哪种。 1、自己做知识付费赚钱 自己做知识付费需要自己有一套成熟的理念观点&#xff0c;能输出成优质的内容传授给他人。可以将自己的知识技能制作成音频、视频、图…

【Python】三、内置函数

文章目录实验目的一、abs()二、int() / float() / str() / pow()1、int()2、float()3、str()4、pow()三、len() / id() / type()1、len()2、id()3、type()四、编写程序&#xff0c;实现输入一个正的实数x&#xff0c;分别输出x的整数部分和小数部分。1.设计思路2.设计算法3.参考…

南芯科技在科创板提交注册:业绩增速迅猛,股东包括红杉、顺为等

近日&#xff0c;上海南芯半导体科技股份有限公司&#xff08;下称“南芯科技”&#xff09;在上海证券交易所科创板递交招股书&#xff08;注册稿&#xff09;。据贝多财经了解&#xff0c;南芯科技于2022年6月21日在科创板递交上市申请&#xff0c;11月18日获得上市委会议通过…

堆(堆排序和模拟堆)

如何手写一个堆 下标从1开始&#xff0c;如果从0开始的话&#xff0c;他的左儿子的下标就等于0*2 0&#xff0c;麻烦 手写堆可以实现的操作&#xff1a;1&#xff0c;插入一个数 2&#xff0c;求集合当中的最小值 3&#xff0c;删除最小值 4&#xff0c;删除任意一个元素…

基于樽海鞘群算法的线性规划求解matlab程序

基于樽海鞘群算法的线性规划求解matlab程序 1 樽海鞘群优化算法 1.1 生物启示 通过研究海底生物樽海鞘在觅食过程中群体呈链状向食物方向移动的行为活动&#xff0c;学者Mirjalili在2017年提出的一种新型启发式仿生算法—樽海鞘群智能优化算法&#xff08;Salp Swarm Algori…

javascript三种事件模型 + Dom事件流 +事件委托

目录三种事件模型● DOM0 级模型&#xff1a;● IE 事件模型&#xff1a;● DOM2 级事件模型&#xff1a;DOM事件流事件委托target/currentTarget/relateTarget的区别三种事件模型 ● DOM0 级模型&#xff1a; 这种模型不会传播&#xff0c;所以没有事件流的概念&#xff0c;…

Golang远程调试Debug环境

目录背景软件版本环境搭建安装Golang环境安装dlv环境启动远程环境Goland 连接远程环境参考背景 最近在做 Operator 的二次开发&#xff0c;开发语言是Golang。Operator 开发时候需要用到k8s集群&#xff0c;遗憾的是k8s编排的容器网络与本地网络不通&#xff0c;无法直接进行d…

十部必看特种部队电影之《勇者行动》

这部特种部队题材电影是馆长收藏了很久的网盘资源&#xff0c;今天拿出来分享给大家。

远程直接连接 MySQL 数据库,阿里云腾讯云允许远程连接教程

不使用SSH登录远程主机直接连接远程数据库 文章目录修改MySQL登录权限1、登录MySQL2、修改mysql库的user表3、防火墙开放3306端口Navicat直接连接远程数据库报错【报错】Cant connect to MySQL server (10060)1、网络问题2、mysql账户设置3、防火墙端口未开放4、查看云服务器商…

JWT -- Json Web token

JWT 的背景知识可以看这篇文章: JSON Web Token 入门教程 JWT 由三个部分组成&#xff1a; Header&#xff08;头部&#xff09;Payload&#xff08;负载&#xff09;Signature&#xff08;签名&#xff09; 在分布式系统下&#xff0c;存在跨session的问题&#xff0c;则使用…

[附源码]Python计算机毕业设计Django毕业生就业管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

cdn加速华为云obs桶文件配置过程(详细)

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 前言 前面写了一篇文章&#xff0c;jeecg-boot中上传图片到华为云obs云存储中 主要介绍了下&#xff0c;如何使用jeect-boot微服务将文件上传至obs中。 但是上传是没有问题&#xff0c;…

目前看过最全的一线大厂面试题(题 + 详解),你所不知道的都在这

前言 在过 1 个月即将进入 2023&#xff0c;然而面对今年的大环境而言&#xff0c;跳槽成功的难度比往年高了很多&#xff0c;很明显的感受就是&#xff1a;对于今年的 java 开发朋友跳槽面试&#xff0c;无论一面还是二面&#xff0c;都开始考验一个 Java 程序员的技术功底和…

FL Studio2022水果编曲音乐制作软件自带完整插件

FL Studio 2022是一款非常好用的音乐制作软件&#xff0c;又称水果编曲软件&#xff0c;软件集合了录音、混音、编辑等多种功能于一体&#xff0c;能够完成各种各样的音乐编曲工作&#xff0c;强大的音乐制作功能受到了很多用户的喜爱&#xff0c;帮你完成各种类型音乐的编曲制…

《500强高管谈VE》-企业经营与VE活动

文章出处&#xff1a;日本VE协会杂志文章翻译&#xff1a;泰泽项目部 关注泰泽&#xff1a;实现高利润企业 《500强高管谈VE》-企业经营与VE活动 作者&#xff1a;兄弟工业常务董事渡边共祥 由墨西哥货币不稳定引发的此次日元升值&#xff0c;一度跌破80日元&#xff0c;呈现…

Servlet程序及部署方式(Tomcat+Smart Tomcat)

目录 1、Servlet是什么&#xff1f; 2、Servlet程序【例——hello world】 2.1、创建项目 2.2、引入Servlet依赖 2.3、创建目录结构 2.4、编写代码 2.5、打包程序 2.6、部署程序 2.7、验证程序 3、更方便的部署方式——Smart Tomcat 1、Servlet是什么&#xff1f; Se…

初识计算机网络

目录 网络的发展 重新看待计算机结构 大型存储平台 认识 "协议" 网络和OS之间的关系 初识网络协议 协议分层 OSI七层模型 TCP/IP五层(或四层)模型 网络传输基本流程 局域网通信的原理 如果进行跨网络传输 网络通信里面的基本轮廓 数据包封装和分用…