您的位置:首页 > 编程语言 > Java开发

java关于集合的遍历与增强for循环的使用

2014-04-08 22:16 549 查看
java集合类的使用可以说是无处不在,总的我们可以将之分为三大块,分别是从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型集合。
许多情况需要我们遍历出集合中的元素,并做相应的处理。
下面对各种类型的集合的遍历做一些总结,关于增强for循环,需要注意的是,使用增强for循环无法访问数组下标值,对于集合的遍历其内部采用的也是Iterator的相关方法。如果只做简单遍历读取,增强for循环确实减轻不少的代码量。

关于List与Set类型集合的遍历:

[java] view
plaincopy

import java.util.ArrayList;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Set;



public class ListAndSetTest {



public static void main(String[] args) {

// List集合的遍历

listTest();

// Set集合的遍历

setTest();

}



private static void setTest() {

Set<String> set = new HashSet<String>();

set.add("J***A");

set.add("C");

set.add("C++");

// 重复的加不进去。

set.add("J***A");

set.add("J***ASCRIPT");



//set集合遍历方法1,使用iterator

Iterator<String> it = set.iterator();

while (it.hasNext()) {

String value = it.next();

System.out.println(value);

}



//set集合遍历方法2,使用增强for循环。

for(String s: set){

System.out.println(s);

}

}



// 遍历list集合

private static void listTest() {

List<String> list = new ArrayList<String>();

list.add("java111");

list.add("java222");

list.add("java333");

list.add("java444");

list.add("java555");



// 遍历方式1 ,使用iterator

Iterator<String> it = list.iterator();

while (it.hasNext()) {

String value = it.next();

System.out.println(value);

}



// 遍历方法2 , 使用传统for循环进行遍历。

for (int i = 0, size = list.size(); i < size; i++) {

String value = list.get(i);

System.out.println(value);

}



// 遍历方法3 , 使用增强for循环进行遍历。

for (String value : list) {

System.out.println(value);

}

}

}

关于Map类型集合的遍历,keySet()与entrySet()方法:

[java] view
plaincopy

//增强For循环

public class MapTest {



public static void main(String[] args) {

// 创建一个HashMap对象,并加入了一些键值对。

Map<String, String> maps = new HashMap<String, String>();

maps.put("111", "java111");

maps.put("222", "java222");

maps.put("333", "java333");

maps.put("444", "java444");

maps.put("555", "java555");



// 传统的遍历map集合的方法1; keySet()

//traditionalMethod1(maps);

// 传统的遍历map集合的方法2; entrySet()

//traditionalMethod2(maps);

// 使用增强For循环来遍历map集合方法1; keySet()

//strongForMethod1(maps);

// 使用增强For循环来遍历map集合方法2; entrySet()

strongForMethod2(maps);

}



private static void strongForMethod2(Map<String, String> maps) {

Set<Entry<String, String>> set = maps.entrySet();

for (Entry<String, String> entry : set) {

String key = entry.getKey();

String value = entry.getValue();

System.out.println(key + " : " + value);

}

}



private static void strongForMethod1(Map<String, String> maps) {

Set<String> set = maps.keySet();

for (String s : set) {

String key = s;

String value = maps.get(s);

System.out.println(key + " : " + value);

}

}



// 使用entrySet()方法,获取maps集合中的每一个键值对,

private static void traditionalMethod2(Map<String, String> maps) {

Set<Map.Entry<String, String>> sets = maps.entrySet();

// 取得迭代器遍历出对应的值。

Iterator<Entry<String, String>> it = sets.iterator();

while (it.hasNext()) {

Map.Entry<String, String> entry = (Entry<String, String>) it.next();

String key = entry.getKey();

String value = entry.getValue();

System.out.println(key + " : " + value);

}

}



// 使用keySet()方法,获取maps集合中的所有键,遍历键取得所对应的值。

private static void traditionalMethod1(Map<String, String> maps) {

Set<String> sets = maps.keySet();

// 取得迭代器遍历出对应的值。

Iterator<String> it = sets.iterator();

while (it.hasNext()) {

String key = it.next();

String value = maps.get(key);

System.out.println(key + " : " + value);

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: