您的位置:

Java集合遍历

Java集合框架是一组已经经过封装的容器类和算法接口,可以用来存储、处理和操作数据。其中集合的遍历是常见的操作之一,可以让我们方便快捷地遍历集合中的元素进行操作。本文将从多个方面对Java集合的遍历做详细的阐述。

一、for循环遍历

最常见的遍历集合的方式是使用for循环。对于List集合,可以通过索引遍历,对于Set和Map集合,则需要先转换为List集合再进行遍历。

//List集合遍历
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
for (int i=0; i<list.size(); i++) {
    System.out.println(list.get(i)); //a b c
}

//Set集合遍历
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
List<String> listSet = new ArrayList<>(set);
for (int i=0; i<listSet.size(); i++) {
    System.out.println(listSet.get(i)); //a b c
}

//Map集合遍历
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
List<Map.Entry<Integer, String>> listMap = new ArrayList<>(map.entrySet());
for (int i=0; i<listMap.size(); i++) {
    System.out.println(listMap.get(i).getKey() + ":" + listMap.get(i).getValue()); //1:a 2:b 3:c
}

二、增强型for循环遍历

Java 5引入了增强型for循环,使用起来非常方便,适用于List、Set、Array等集合,但是对于Map集合则不方便,因为Map集合中是键值对,需要使用entrySet()方法将其转换为Set集合进行遍历。

//List集合遍历
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
for (String str : list) {
    System.out.println(str); //a b c
}

//Set集合遍历
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
for (String str : set) {
    System.out.println(str); //a b c
}

//Map集合遍历
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
for (Map.Entry<Integer, String> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ":" + entry.getValue()); //1:a 2:b 3:c
}

三、迭代器遍历

Iterator是Java集合框架中的一个接口,专门用来遍历集合中的元素,通过使用该接口配合while循环,我们可以很方便地遍历List、Set、Map等集合。

//List集合遍历
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
Iterator<String> itList = list.iterator();
while (itList.hasNext()) {
    System.out.println(itList.next()); //a b c
}

//Set集合遍历
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
Iterator<String> itSet = set.iterator();
while (itSet.hasNext()) {
    System.out.println(itSet.next()); //a b c
}

//Map集合遍历
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
Iterator<Map.Entry<Integer, String>> itMap = map.entrySet().iterator();
while (itMap.hasNext()) {
    Map.Entry<Integer, String> entry = itMap.next();
    System.out.println(entry.getKey() + ":" + entry.getValue()); //1:a 2:b 3:c
}

四、Lambda表达式遍历

Java 8引入Lambda表达式,可以让我们更加简洁地对集合进行遍历,主要使用forEach()方法实现。

//List集合遍历
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.forEach(str -> System.out.println(str)); //a b c

//Set集合遍历
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.forEach(str -> System.out.println(str)); //a b c

//Map集合遍历
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.forEach((key, value) -> System.out.println(key + ":" + value)); //1:a 2:b 3:c

五、Stream流遍历

在Java 8中还引入了Stream流,通过Stream可以对集合进行更加高效的遍历、过滤和映射等操作,能够大大简化集合的遍历操作。

//List集合遍历
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
list.stream().forEach(str -> System.out.println(str)); //a b c

//Set集合遍历
Set<String> set = new HashSet<>();
set.add("a");
set.add("b");
set.add("c");
set.stream().forEach(str -> System.out.println(str)); //a b c

//Map集合遍历
Map<Integer, String> map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
map.entrySet().stream().forEach(entry -> System.out.println(entry.getKey() + ":" + entry.getValue())); //1:a 2:b 3:c

六、小结

本文介绍了Java集合的多种遍历方式,每种方式都具有自己的优缺点,在实际开发中应根据具体需求进行选择。同时也可根据需求选择不同的集合类型,以及运用Java 8新特性Lambda表达式和Stream流简化遍历操作。