java 学习笔记 day12 set/map集合

1391-王同学

发表文章数:51

首页 » Java » 正文

1.set集合

1.1 保证唯一性的原理

HashSet保证元素唯一性的原理?

通过查看add方法的源码,我们知道了添加功能的执行过程中,是进行了数据的判断的。
这个判断的流程是:

首先比较对象的哈希值是否相同,这个哈希值是根据对象的hashCode()计算出来的。
	如果哈希值不同,就直接添加到集合中
    如果哈希值相同,继续执行equals()进行比较,
		返回的是true,说明元素重复,不添加。
    	返回的是false,说明元素不重复,就添加。

如果我们使用HashSet集合存储对象,你要想保证元素的唯一性,就必须重写hashCode()和equals()方法。(右键自动生成就可以了)

2.Map集合

  • Map:
    将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。

  • 举例
    学生的学号和姓名
    it001 林青霞
    it002 张曼玉
    it003 王祖贤

  • 实现类
    HashMap

  • 常用方法
    V put(K key,V value): 添加元素
    V remove(Object key): 根据键删除键值对元素
    void clear(): 移除所有的键值对元素
    boolean containsKey(Object key): 判断集合是否包含指定的键
    boolean containsValue(Object value): 判断集合是否包含指定的值
    boolean isEmpty():判断集合是否为空
    int size():返回集合中的键值对的对数
    V get(Object key): 根据键获取值
    Set keySet(): 获取所有键的集合
    Collection values(): 获取所有值的集合
    entrySet 获取所有键值对

Map集合中的实现类的数据结构只针对键有效。

 public class MapDemo3 {
	public static void main(String[] args) {
		//创建集合对象
		Map<String,String> map = new HashMap<String,String>();
		
		//添加元素
		map.put("郭靖", "黄蓉");
		map.put("杨过", "小龙女");
		map.put("张无忌", "赵敏");
		
		//V get(Object key):根据键获取值
		System.out.println("get:"+map.get("张无忌"));
		System.out.println("get:"+map.get("张三丰"));
		System.out.println("--------------------");
		
		//Set<K> keySet():获取所有键的集合
		Set<String> set = map.keySet();
		for(String key : set) {
			System.out.println(key);
		}
		System.out.println("--------------------");
		
		//Collection<V> values():获取所有值的集合
		Collection<String> values = map.values();
		for(String value : values) {
			System.out.println(value);
		}
	}
}

3. 练习:HashMap嵌套ArrayList

需求:HashMap集合嵌套ArrayList集合并遍历。
定义一个HashMap集合,它包含三个元素,每一个元素的键是String类型,值是ArrayList类型。
键:String 人物来自哪部电视剧
值:ArrayList 人物的名称
每一个ArrayList集合的数据是String类型的。
给出如下的字符串数据,请用代码实现需求。
第一个ArrayList集合的元素:(三国演义)
诸葛亮 赵云
第二个ArrayList集合的元素:(西游记)
唐僧 孙悟空
第三个ArrayList集合的元素:(水浒传)
武松 鲁智深

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

public class test2 {
    public static void main(String[] args) {
        HashMap<String, ArrayList> hm =new HashMap<>();
        ArrayList<String> a1=new ArrayList<String>();
        a1.add("诸葛亮");
        a1.add("赵云");
        hm.put("三国演义",a1);
        ArrayList<String> a2=new ArrayList<String>();
        a2.add("唐僧");
        a2.add("孙悟空");
        hm.put("西游记",a2);

        ArrayList<String> a3=new ArrayList<String>();
        a3.add("武松");
        a3.add("鲁智深");
        hm.put("水浒传",a3);

        Set<String> s = hm.keySet();
        for (String x:s){
            System.out.println(x+"---"+hm.get(x));

        }
    }
}

未经允许不得转载:作者:1391-王同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《java 学习笔记 day12 set/map集合》 发布于2020-11-13

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录