Java中数组、集合初始化及遍历方式
2023-04-18 15:26:09 时间
一、数组
一维数组两种初始化方式
-
静态初始化
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); }
二维数组两种初始化方式
-
静态初始化
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
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); });
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()); });
相关文章
- Mac系统下java环境配置
- Mac OS安装IDEA和JDK(超级详细教程)
- 【Kotlin】标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )
- 【Kotlin】扩展函数 ① ( 扩展函数简介 | 为 Any 超类定义扩展函数 | private 私有扩展函数 | 泛型扩展函数 | 标准函数 let 函数是泛型扩展函数 )
- 【Kotlin】类的继承 ② ( 使用 is 运算符进行类型检测 | 使用 as 运算符进行类型转换 | 智能类型转换 | Any 超类 )
- Java版本新零售小程序saas商城全开源系统
- 【Kotlin】:: 双冒号操作符详解 ( 获取类的引用 | 获取对象类型的引用 | 获取函数的引用 | 获取属性的引用 | Java 中的 Class 与 Kotlin 中的 KClass )
- Mac安装配置Visual Studio Code(vscode)以及Java环境详细教程(初学者必看)
- Mac搭建Java开发环境最佳指南
- Android App开发基础
- MAC安装maven步骤
- 基于Java+SpringBoot+Vue+uniapp微信小程序零食商城系统设计和实现
- 1.5.6 NN与2NN-hadoop-最全最完整的保姆级的java大数据学习资料
- Redis的Java客户端
- 袋鼠云平台代码规范化编译部署的提效性改进实践
- IDEA没有新建jsp文件按钮
- 多版本并发控制 MVCC
- Java开源博客系统AngelBlog发布
- 项目管理构建工具——Maven(基础篇)
- 使用 Java 操作 Redis