JAVA 18
Map集合和Collection集合的区别:
1.Map集合存储元素是成对出现的,Map集合有一个键和值,键是唯一的,但是值是可以重复的。
2.Collection 存储的是单独出现的元素,子接口Set元素唯一,子接口List元素是可以重复的。
Map接口功能概述
A:添加功能
B:删除功能
C:判断功能
D:获取功能
E:长度功能
接下来我们用一段代码来演示:
public class MapDemo1 {
public static void main(String[] args) {
//创建map集合
Map<String,String> m = new HashMap<String,String>();
//添加元素
m.put("小米","大米");
m.put("小王","大王");
m.put("小明","大明");
//删除功能
//System.out.println("remove"+m.remove("小米"));
//判断功能
System.out.println("containKey:"+m.containsKey("小王"));
System.out.println("containKey:"+m.containsKey("小黑"));
//判断集合是否为空
System.out.println("isEmpty:"+m.isEmpty());
//长度功能
System.out.println("size:"+m.size());
//获取键值
System.out.println("获取键值:"+m.get("小王"));
我们运行得到的结果如下:
containKey:true
containKey:false
isEmpty:false
size:3
获取键值:大王
Map 获取所有键的集合
我们在后面添加如下代码:
Set<String> s = m.keySet();//获取键的集合
for (String key : s){
System.out.println(key);
}
输出结果:
小明
小王
小米
我们根据输出的结果发现,Map集合的顺序和代码内容是不一样的,由此可得,Map集合是无序的。
Map获取所有值的集合
我们添加如下代码
Collection<String> collection = m.values(); //Map获取所有值的集合
for (String valuse : collection){
System.out.println(valuse);
}
输出结果:
大明
大王
大米
那么我们使用了这两种方法遍历之后,我们改怎么样去根据键去找值呢?
添加如下代码:
Set<String> se = m.keySet();
for (String key:se){
String valus = m.get(key);
System.out.println(key+"--"+valus);
}
输出结果:
小明–大明
小王–大王
小米–大米
但是呢上面都不是集合的遍历,都只是值和键之间的遍历,接下来来看一种Map集合的遍历。
Map集合的遍历
第一种方法:
键找值
a:获取所有键的集合
b:遍历键的集合,得到每一个键
c:根据键到集合中去找值
首先我们创建一个集合对象,并添加元素
// Set<Map.Entry<K,V>> entrySet()
public class MapDemo3 {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//创建集合对象
Map<String, String> map = new HashMap<String, String>();
//创建元素 添加到集合
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
map.put("key4","value4");
遍历的第一种方式:
键值对对象找键和值
a:获取所有的键值对对象的集合
b:遍历键值对对象的集合,获取每一个键值对对象
c:根据键值对对象去获取键和值
//遍历一
Set<Map.Entry<String, String>> set = map.entrySet();
for (Entry<String, String> entry : set) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"-----"+value);
}
得到的结果如下:
key1—–value1
key2—–value2
key3—–value3
key4—–value4
这样我们就成功的遍历出了Map集合
但是我们还有一种遍历集合的方式:
//遍历方式二
System.out.println("遍历方式二");
Set<String> set2 = map.keySet();
for (String key : set2){
String value = map.get(key);
System.out.println(key+"----"+value);
结果如下:
遍历方式二
key1—-value1
key2—-value2
key3—-value3
key4—-value4
HashMap集合
HashMap类:键是哈希表结构,可以保证键的唯一性
public static void main(String[] args) {
// TODO 自动生成的方法存根
// 创建学生对象
HashMap<String, Student> hashMap = new HashMap<String, Student>();
// 创建学生对象
Student s1 = new Student("小明", 11);
Student s2 = new Student("小王", 21);
Student s3 = new Student("小黑", 33);
// 添加学生元素
hashMap.put("1", s1);
hashMap.put("2", s3);
hashMap.put("3", s2);
// 遍历
Set<String> set5 = hashMap.keySet();
for (String key : set5) {
Student v = hashMap.get(key);
System.out.println(key + "-----" + v.getAge() + v.getName());
}
}
}
输出结果如下:
1—–11小明
2—–33小黑
3—–21小王