Java教程

Map和 Set 基础操作--java

本文主要是介绍Map和 Set 基础操作--java,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在这里插入图片描述

一、Map
1、说明
Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯
一的,不能重复。

2、特性:
1) Map是一个接口,不能直接实例化对象,如果要实例化对象只能实例化其实现类TreeMap或者
HashMap
2)Map中存放键值对的Key是唯一的,value是可以重复的
3) 在Map中插入键值对时,key不能为空,否则就会抛NullPointerException异常,但是value可以
为空
4)Map中的Key可以全部分离出来,存储到Set中来进行访问(因为Key不能重复)。
5) Map中的value可以全部分离出来,存储在Collection的任何一个子集合中(value可能有重复)。
6) Map中键值对的Key不能直接修改,value可以修改,如果要修改key,只能先将该key删除掉,然
后再来进行重新插入

import java.util.HashMap;
import java.util.Map;

public class TestMap {
    public static void main(String[] args) {
        //创建一个Map的实例
        //Map里面泛型参数第一个为key,第二个为value
        //通过一个具体的类去实现接口
        Map<String,String> map =new HashMap<>();

        //1、使用put的方法插入键值对
        //map中的元素相对的顺序和插入顺序无关
        //注意:key不能重复,如果put的时候发现key已经存在,就会覆盖掉之前的
        map.put("及时雨","宋江");
        map.put("黑旋风","李逵");
        System.out.println(map);

        //2、使用get方法,根据key获取value
        //如果key不存在的key,get返回null
        //还可以使用getOrDefault来根据key获取value
        //如果key不存在,getOrDefault返回一个默认值
        String value=map.get("及时雨");
        System.out.println(value);

        //3、使用 isEmpty 判空
        //为空返回true,否则返回false
        System.out.println(map.isEmpty());

        //4、使用size方法获取到键值对的个数
        System.out.println(map.size());

        //5、使用clear清空所有键值对
        map.clear();
        System.out.println(map.isEmpty());
        System.out.println(map.size());

        //6、遍历Map--->选哟把Map转换成Set在遍历
        // Entry此处表示“条目”,每个条目就是一个键值对
        //map.entrySet()的作用就是将Map这样的键值对结构进行转换
        //转换成一个Set,Set里面的每一个元素都是一个Entry,每个Entry里包含了key和value
        for(Map.Entry<String,String> entry:map.entrySet()){
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

        //7、单独的获取到所有的key和所有的value
        for(String key: map.keySet()){
            System.out.println(key);
        }
        for(String value1 :map.values()){
            System.out.println(value1);

        }
    }
}

二、Set
1.Set的说明
Set是继承自Collection的接口类,Set中只存储了Key。
2、特性:
1)Set是继承自Collection的一个接口类
2)Set中只存储了key,并且要求key一定要唯一
3)Set的底层是使用Map来实现的,其使用key与Object的一个默认对象作为键值对插入到Map中的
4)Set最大的功能就是对集合中的元素进行去重
5)实现Set接口的常用类有TreeSet和HashSet,还有一个LinkedHashSet,LinkedHashSet是在
HashSet的基础上维护了一个双向链表来记录元素的插入次序。
6)Set中的Key不能修改,如果要修改,先将原来的删除掉,然后再重新插入
7)Set中不能插入null的key。
8)TreeSet和HashSet的区别

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class TestSet {

    public static void main(String[] args) {
        Set<String> set = new HashSet<>();

        //1.使用add插入元素(打印出的顺序不确定)
        //插入重复的key,实际只保留一份(可用于去重)
        set.add("c");
        set.add("c++");
        set.add("java");
        set.add("c#");
        System.out.println(set);

        //2.使用contains方法判定元素是否存在!!!
        boolean ret = set.contains("java");
        System.out.println(ret);

        //3.使用remove方法删除元素
        set.remove("java");
        System.out.println(set);

        //4、!!!
        //注意:Set中的元素不能改,如果非要改,那就删了再插入新的

        //5. 使用isEmpty判空
        boolean ret2=set.isEmpty();
        System.out.println(ret2);

        //6、使用size获取元素个数
        System.out.println( set.size());

        //7.使用clear清空元素
        set.clear();
        System.out.println(set);

        //8.遍历
        //1)使用for-each进行遍历(前提是该类得实现 Iterator接口,才能使用for-each)
        for(String key:set){
            System.out.println(key);
        }
        //2)使用迭代器(Iterator)进行遍历
        //所谓的迭代就好比将一段路分为好多小段,一小段一小段走,慢慢就走到了终点
        //迭代器存在的意义就是为了遍历集合类
        //先去创建一个Iterator实例,set.iterator()就得到了当前集合类所对应的迭代器对象
        Iterator<String> it =set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}

这篇关于Map和 Set 基础操作--java的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!