前言:
HashMap的集合中的比重是无可厚非的,由自身的数组+链表/红黑树构成的(JDK 1.8),这样使得HashMap优点表现出来:
- 数组查询效率快;
- 链表的插入和删除效率也加快
但是HashMap是Map家族下的主心骨(键值对形式),其中没有迭代器之说;
所以,这里我们简单谈谈hashMap的遍历方式。
package com.atguigu.map;
import org.junit.Test;
import java.util.*;
public class TestHashMap1 {
//1.探寻HashMap的变化:
@Test
public void Test01(){
Map hashMap = new HashMap();
hashMap.put(1,"yuanwei");
hashMap.put(2,"yuyi");
hashMap.put(3,"web");
//map的遍历方法:
//map是个接口和collection是两个家族的:属于映射关系那种的表现:,没有遍历的方法:因为这个方法是在collection接口中的
// iterator的迭代器方法;
//map的遍历方法一、
/*keySet的方法:表示获取所有的key; --->key不会重复--所以可以是单独的set集合--->属于这个Collection的
可以使用的是迭代器-以及foreach:
for(对象的类型 单个对象的名字:遍历的集合)
*/
Set set = hashMap.keySet();
//遍历的增强for循环:
for (Object map:set
) {
//遍历的单一的map每个对象
System.out.println(map);
//将这个hashmap中get(value)--->key -value的方法
System.out.println(map +"-->"+hashMap.get(map));//通过key-->value
}
//或者是直接遍历的:()
System.out.println("单个key的遍历");
set.forEach(System.out::println);
//遍历方式二:直接遍历出的values();:
System.out.println("直接将这个value变成集合的形式输出--因为是collection所以可以用for循环");
Collection values = hashMap.values();
values.forEach(System.out::println);
//遍历的方式三: entrySet()
// 根据映射关系直接输出的Entry的一个实体(key,value)--其中的这个key-value的值都是可以直接上手的-可以是任何对象;
Set entrySet = hashMap.entrySet();
for (Object entry:entrySet
) {
//注意:这里输出的都是单一的对象,不是集合
System.out.println(entry);
/* 1=yuanwei
2=袁玮
3=马伟博
*/
}
}
//表示的是一个arraylist的是一个可以迭代的方法;
@Test
public void testArrayList(){
List<String> arrayList1 = new ArrayList();
arrayList1.add("2");
arrayList1.add("2");
arrayList1.add("2");
arrayList1.add("2");
arrayList1.forEach(System.out::println);
}
}
输出的Console
1
1-->yuanwei
2
2-->yuyi
3
3-->web
1
2
3
直接将这个value变成集合的形式输出--因为是collection所以可以用循环
yuanwei
yuyi
web
1=yuanwei
2=yuyi
3=web