一维数组两种初始化方式
静态初始化
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 (int i = 0; i < array.length; i++) {System.out.println(array[i]);
}
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 (int i = 0; i < array.length; i++) {for (int j = 0; j < array[i].length; j++) {System.out.println(array[i][j]);}
}
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 = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
List list = new ArrayList() {{add("1");add("2");add("3");
}};
List list = Arrays.asList("1","2","3");
List list = Stream.of("1","2","3").collect(Collectors.toList());
List 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 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 map = new HashMap();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
Java8新特性,双花括号初始化
Map map = new HashMap() {{put("1", "a");put("2", "b");put("3", "c");
}};
Java9新特性,Map.of生成不可变集合
Map map = Map.of("1,"a","2","b","3","c");
Map5种遍历方式
Map.entrySet遍历
推荐,尤其是大容量的情况下
for (Map.Entry 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> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {Map.Entry 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());});