前言
本次内容涵盖了数组和集合的几乎所有常用的遍历方法,制作不易,勿忘点赞收藏。
一、数组(3种)
1.for循环
示例代码
int[] a = new int[5];
for (int i = 0; i < a.length; i++) {
a[i] = i;
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
运行结果
2.增强for循环
示例代码
int[] a = new int[5];
for (int i = 0; i < a.length; i++) {
a[i] = i;
}
for (int i:a) {
System.out.println(i);
}
运行结果
3.利用工具类Arrays类的toString()方法
示例代码
int[] a = new int[5];
for (int i = 0; i < a.length; i++) {
a[i] = i;
}
System.out.println(Arrays.toString(a));
//底层用StringBuilder拼接 返回一个字符串
运行结果
二、List集合(5种)
1.for循环
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
2.增强for循环
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
for (Integer i : list ){
System.out.println(i);
}
3.迭代器
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
//获取集合的迭代器
//指针默认指向0索引
Iterator<Integer> iterator = list.iterator();
while (iterator.hasNext()) {
Integer next = iterator.next();
System.out.println(next);
}
4.列表迭代器
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
//列表迭代器
//获取一个列表选代器的对象,里面的指针默认也是指向0素引的
//额外添加了一个方法:在遍历的过程中,可以添加元素
ListIterator<Integer> listIterator = list.listIterator();
while (listIterator.hasNext()) {
int str = listIterator.next();
if (str == 2){
listIterator.add(4);
}
System.out.println(str);
}
System.out.println(list);
5.forEach()方法(Lambda表达式 Stream API)
List<Integer> list = new ArrayList<>();
for (int i = 0; i < 5; i++) {
list.add(i);
}
//lambda表达式
//forEach方法的底层其实就是一个循环遍历,依次得到集合中的每一个元素
//并把每一个元素传递给下面的accept方法
//accept方法的形参s,依次表示集合中的每一个元素
list.forEach(s -> System.out.println(s));
//lambda表达式 Stream API
//list.forEach(System.out::println);
三、Set集合 (3种)
1.增强for循环
HashSet<Integer> hashSet = new HashSet<>();
for (int i = 0; i < 5; i++) {
hashSet.add(i);
}
for (Integer integer : hashSet) {
System.out.println(integer);
}
2.迭代器
HashSet<Integer> hashSet = new HashSet<>();
for (int i = 0; i < 5; i++) {
hashSet.add(i);
}
//迭代器遍历集合
Iterator<Integer> iterator = hashSet.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
3.forEach()方法(Lambda表达式 Stream API)
HashSet<Integer> hashSet = new HashSet<>();
for (int i = 0; i < 5; i++) {
hashSet.add(i);
}
//lambda表达式
hashSet.forEach(s-> System.out.println(s));
//lambda表达式 streamAPI
//hashSet.forEach(System.out::println);
四、Map集合(4种)
1.keySet()方法获取键
通过Map集合的keySet()方法获取所有的键的Set集合,遍历Set集合通过键获取值
HashMap<String, Integer> hashMap = new HashMap<>();
for (int i = 0; i < 5; i++) {
hashMap.put("key" + i, i);
}
//通过keySet获取所有key的Set集合
Set<String> keys = hashMap.keySet();
//遍历Set集合,通过键获取值
for (String key : keys) {
System.out.println(key + ":" + hashMap.get(key));
}
2.values()方法获取值
通过Map集合的values()方法获取所有value的Collection集合,遍历Collection集合获得值
HashMap<String, Integer> hashMap = new HashMap<>();
for (int i = 0; i < 5; i++) {
hashMap.put("key" + i, i);
}
//通过values获取所有value的Collection集合
Collection<Integer> values = hashMap.values();
for (Integer value : values) {
System.out.println(value);
}
3.entrySet()方法获取键值对
通过Map集合entrySet()方法获取所有键值对的Set集合,遍历Set集合,获取Map$Entry对象,并使用该类的getKey()和getValue()方法获取键和值
HashMap<String, Integer> hashMap = new HashMap<>();
for (int i = 0; i < 5; i++) {
hashMap.put("key" + i, i);
}
//通过entrySet获取所有键值对
Set<Map.Entry<String, Integer>> entries = hashMap.entrySet();
//遍历Set集合
//通过Map$Entry类的getKey()和getValue()方法获取键和值
for (Map.Entry<String, Integer> entry : entries) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
4.forEach()方法
HashMap<String, Integer> hashMap = new HashMap<>();
for (int i = 0; i < 5; i++) {
hashMap.put("key" + i, i);
}
//lambda表达式遍历
hashMap.forEach((k, v) -> System.out.println(k + ":" + v));