java中三种常见集合List,Set,Map的遍历方法

List接口和Set接口继承自Collection接口,可以使用Collection接口中常用的方法,如

add(Object e)    // 添加指定对象至当前集合
remove(Object o)    // 将指定对象从当前集合移除
isEmpty()   // 返回布尔值,判断当前集合是否为null
iterator()    // 返回用于遍历集合内元素的迭代器
size()    //返回int值,获取当前集合中元素的个数

1.List集合
List接口不能直接被实例化,需要用到List接口的实现类,常用的是ArrayList类与LinkList类
List集合新增的方法

get(int index)  //获得指定索引位置上的元素
set(int index,Object obj)  //将集合中指定索引位置的对象修改为指定的对象

(1)fo循环

List<String>list=new ArrayList<>();    //创建上转型对象list
		/*执行添加语句*/
		list.add("a");     //add()方法
		list.add("b");
		list.add("c");
		for(int i=0;i<list.size();i++) {
			System.out.println(list.get(i));
		}

(2)foreach循环

for (String string : list) {   
			System.out.println(string);
		}

(3)Iterator迭代器

Iterator<String> it=list.iterator();  //创建迭代器
		while(it.hasNext()) {                //如果仍有元素可以迭代,hashNext()返回true
			System.out.println(it.next().toString());  //next返回迭代的下一个元素
		}

2.Set集合
【1】Set接口不能直接被实例化,需要用到Set接口的实现类,常用的是HashSett类与TreeSet类
【2】Set集合没有提供get方法,无法通过索引获取元素,所以对Set集合的遍历只能通过加强for循环和迭代器进行遍历

(1)foreach循环

for (String string : set) {   
			System.out.println(string);
		}

(2)Iterator迭代器

Iterator<String> it=set.iterator();  //创建迭代器
		while(it.hasNext()) {                //如果仍有元素可以迭代,hashNext()返回true
			System.out.println(it.next().toString());  //next返回迭代的下一个元素
		}

3.Map集合
Map接口不继承Collection接口,但提供了key到value的映射关系
Map接口中不能包含相同的key,且每个key只能映射一个value
常用方法

put(K key, V value)   		 //将键(key)/值(value)映射存放到Map集合中
get(Object key)      		 //返回指定键所映射的值,没有该key对应的值则返回 null
size()               		 // 返回Map集合中数据数量
clear()            		     // 清空Map集合
isEmpty () 			 		 //判断Map集合中是否有数据,如果没有则返回true,否则返回false
remove(Object key)           //删除Map集合中键为key的数据并返回其所对应value值。
values() 			         // 返回Map集合中所有value组成的以Collection数据类型格式数据。
containsKey(Object key)      // 判断集合中是否包含指定键,包含返回 true,否则返回false
containsValue(Object value)  //判断集合中是否包含指定值,包含返回 true,否则返回false
keySet()   			         // 返回Map集合中所有key组成的Set集合
entrySet()                   //将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合

(1)foreach循环 【1】 分别使用keySet() ,values()方法创建key和value集合,并输出结果

Map<String,String>map=new HashMap<>();    //创建上转型对象map
		/*执行添加语句*/
		map.put("keyAA","valueAA");      
		map.put("keyAC","valueAA");
		map.put("keyAB","valueAA");
		Set<String>set=map.keySet();   //构建Map集合中所有的key的set集合
		Collection<String>col=map.values();   //构建集合中所有的value值的集合
		System.out.println("key值");
		for (String str : set) {         //foreach输出set集合中的key值
			System.out.println(str);
		}
		System.out.println("~~~~~~~");
		System.out.println("value值");        //foreach输出col集合中的value值
		for (String string : col) {
			System.out.println(string);
		}

结果为

key值
keyAC
keyAB
keyAA
~~~~~~~
value值
valueAA
valueAA
valueAA

【2】使用get(Object key)方法返回key对应的value值

Set<String>set=map.keySet();   //构建Map集合中所有的key的set集合
for (String str : set) {         //foreach输出set集合中的key值,Map接口创建的对象map调用get()方法得到key对应value值
			System.out.println("key="+str+",value="+map.get(str));
		}

结果如下

key=keyAC,value=valueAA
key=keyAB,value=valueAA
key=keyAA,value=valueAA

(2)迭代器下 分别使用keySet() ,values()方法创建key和value集合,使用get(Object key)方法,并遍历

错误代码!!!
Iterator<String> it=set.iterator();       //foreach输出set集合中的key值
		while(it.hasNext()) {
			System.out.println("key="+it.next().toString()+",value="+map.get(it.next().toString()));
		}	
	//it.next()每次循环发生两次执行,会出现访问越界,元素未能找到的异常
	java.util.NoSuchElementException
//正确代码如下,values() ,get(Object key) 二取一即可
	Set<String>set=map.keySet();   //构建Map集合中所有的key的set集合
		Collection<String>col=map.values();   //构建集合中所有的value值的集合
		System.out.println("key值");
		Iterator<String> it=set.iterator();       //foreach输出set集合中的key值
		while(it.hasNext()) {
			String key=it.next().toString();
			System.out.println("key="+key+",value="+map.get(key));
		}	
		System.out.println("~~~~~~~");
		System.out.println("value值");        //foreach输出col集合中的value值
		for (String string : col) {
			System.out.println(string);

entrySet() 方法 //将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合
(3)entrySet() 方法 下的迭代器

Map<String,String>map=new HashMap<>();    //创建上转型对象map
		/*执行添加语句*/
		map.put("keyCC","valueAA");      
		map.put("keyCS","valueAA");
		map.put("keyCF","valueAA");
		Set<Entry<String,String>>set=map.entrySet();   //构建Map集合中所有的key-value的set集合,数据类型为泛型Entry<String,String>
		Iterator<Entry<String,String>>it=set.iterator();    
		while(it.hasNext()) {
			Entry<String,String>entry=it.next();   //创建entry对象赋值it.next(),避免下方代码访问越界
			System.out.println("key="+entry.getKey()+",value="+entry.getValue());
		}

(4)entrySet() 方法 下的foreach循环

Set<Entry<String,String>>set=map.entrySet();   //构建Map集合中所有的key-value的set集合,数据类型为泛型Entry<String,String>
for (Entry<String, String> entry : set) {
	System.out.println(entry);
	} 

结果

keyCF=valueAA
keyCC=valueAA
keyCS=valueAA

猜你喜欢

转载自blog.csdn.net/qq_44724446/article/details/89706041
今日推荐