JAVA part 12 集合

1218-马同学

发表文章数:15

热门标签

,
首页 » Java » 正文

JAVA part 12 集合

Set集合的特点

Set:
一个不包含重复元素的collection
HashSet:
它不保证set的迭代顺序;特别是他不保证该顺序恒久不变

代码:

package Day_12;

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

public class test1 {
    public static void main(String[] args) {

        //创建集合对象
        Set<String> s = new HashSet<String>();

        //添加元素
        s.add("hello");
        s.add("world");
        s.add("java");

        //唯一
        s.add("world");

        //遍历循环
        for(String x : s){
            System.out.println(x);
        }
    }
}

HashSet保证元素唯一性的原理

通过查看add方法的源码,我们知道了添加功能的执行过程中,是进行了数据判断的。
这个判断过程是:
首先进行比较对象的哈希值是否相同,这个哈希值是根据对象的hashCode()计算出来的。如果哈希值不同,就直接添加到集合中;如果哈希值相同,继续执行equals()进行比较:返回的是true,说明元素重复,不添加;返回的是false,说明元素不重复,就添加

如果使用HashSet集合存储对象想保证元素的唯一性,就必须重写hashCode()和equals()方法

代码:

package Day_12;

import java.util.HashSet;

public class test2 {
    public static void main(String[] args) {
        
        //创建集合对象
        HashSet<String> hs = new HashSet<String>();
        
        //添加元素
        hs.add("hello");
        hs.add("world");
        hs.add("java");
        hs.add("world");
        
        //遍历集合
        for(String s : hs){
            System.out.println(s);
        }
    }
}

Map集合

将键映射到值的对象,一个映射不能包括重复的键:每个键最多有一个值

package Day_12;

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

public class test3 {
    public static void main(String[] args) {
        
        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();
        
        //添加元素
        //put(K key, V value):添加对象
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");
        
        //输出集合对象
        System.out.println(map);
    }
}

Map集合的成员方法

1.V put(K key, V value):添加元素
2.V remove(Object key):根据键删除键值对元素
3.void clear():清空所有键值对元素
4.boolean containsKey(Object key):判断集合是否包含指定的键
5.boolean containsValue(Object value):判断集合是否包含指定的值
6.boolean isEmpty():判断集合是否为空
7.int size():返回集合中的键值对对数

V put(K key, V value):添加元素

package Day_12;

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

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //V put(K key, V value):添加元素
        System.out.println("put:"+map.put("001", "成龙"));
        System.out.println("put:"+map.put("001", "李连杰"));

        //输出集合对象
        System.out.println(map);
        /*
        put:null
        put:成龙
        {001=李连杰}
        */
    }
}

V remove(Object key):根据键删除键值对元素

package Day_12;

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

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //V remove(Object key):根据键删除键值对元素
        System.out.println("remove:"+map.remove("001"));
        System.out.println("remove:"+map.remove("004"));

        //输出集合对象
        System.out.println(map);
        /*
        remove:成龙
        remove:null
        {002=李连杰, 003=刘德华}
        */
    }
}

void clear():清空所有键值对元素

package Day_12;

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

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //void clear():清空所有键值对元素
        map.clear();

        //输出集合对象
        System.out.println(map);
        /*
        {}
        */
    }
}

boolean containsKey(Object key):判断集合是否包含指定的键

package Day_12;

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

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //boolean containsKey(Object key):判断集合是否包含指定的键
        System.out.println("containsKey:"+map.containsKey("001"));
        System.out.println("containsKey:"+map.containsKey("004"));

        //输出集合对象
        System.out.println(map);
        /*
        containsKey:true
        containsKey:false
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

boolean containsValue(Object value):判断集合是否包含指定的值

package Day_12;

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

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //boolean containsValue(Object value):判断集合是否包含指定的值
        System.out.println("containsValue:"+map.containsValue("成龙"));
        System.out.println("containsValue:"+map.containsValue("周星驰"));

        //输出集合对象
        System.out.println(map);
        /*
        containsValue:true
        containsValue:false
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

boolean isEmpty():判断集合是否为空

package Day_12;

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

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //boolean isEmpty():判断集合是否为空
        System.out.println("isEmpty:"+map.isEmpty());

        //输出集合对象
        System.out.println(map);
        /*
        isEmpty:false
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

int size():返回集合中的键值对对数

package Day_12;

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

public class test4 {
    public static void main(String[] args) {

        //创建结合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //int size():返回集合中的键值对对数
        System.out.println("size:"+map.size());

        //输出集合对象
        System.out.println(map);
        /*
        size:3
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Map集合的获取

1.V get(Object key):根据键获取值
2.Set< K > key Set():获取所有键的集合
3.Collection< V > values():获取所有值的集合

V get(Object key):根据键获取值

package Day_12;

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

public class test5 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //V get(Object key):根据键获取值
        System.out.println("get:"+map.get("001"));
        System.out.println("get:"+map.get("004"));

        System.out.println(map);
        /*
        get:成龙
        get:null
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Set< K > key Set():获取所有键的集合

package Day_12;

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

public class test5 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //Set< K > key Set():获取所有键的集合
        Set<String> set = map.keySet();
        for(String key : set){
            System.out.println(key);
        }
        
        System.out.println(map);
        /*
        001
        002
        003
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Collection< V > values():获取所有值的集合

package Day_12;

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

public class test5 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //Collection< V > values():获取所有值的集合
        Collection<String> values = map.values();
        for(String value : values){
            System.out.println(value);
        }

        System.out.println(map);
        /*
        成龙
        李连杰
        刘德华
        {001=成龙, 002=李连杰, 003=刘德华}
        */
    }
}

Map集合的遍历

根据键找值:
1.获取所有键的集合
2.遍历键值对对象的集合,获取到每一个键
根据键找值

package Day_12;

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

public class test6 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //获取所有键的集合
        Set<String> set = map.keySet();
        //遍历键的集合,获取每一个值
        for(String key : set){
            String value = map.get(key);
            System.out.println(key+"-----"+value);
        }
    }
}

根据键值对对象找键和值
1.获取所有键值对对象的集合
2.遍历键值对对象的集合,获取到每一个键值对对象
3.根据键值对对象找键和值

package Day_12;

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

public class test7 {
    public static void main(String[] args) {

        //创建集合对象
        Map<String, String> map = new HashMap<String, String>();

        //添加元素
        map.put("001", "成龙");
        map.put("002", "李连杰");
        map.put("003", "刘德华");

        //获取所有键值对对象的集合
        //Set<Map.Entry<K, V>>  entrySet():获取键值对对象的集合,得到每一个键值对对象
        Set<Map.Entry<String, String>> set = map.entrySet();

        //遍历键值对对象的集合,得到每一个键值对对象
        for(Map.Entry<String, String> me : set){
            String key = me.getKey();
            String value = me.getValue();
            System.out.println(key+"------"+value);
        }
    }
}

两种遍历方式图解
JAVA part 12 集合

拜师教育学员文章:作者:1218-马同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《JAVA part 12 集合》 发布于2020-08-20

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

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

支付宝扫一扫打赏

微信扫一扫打赏

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

登录

忘记密码 ?

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

Q Q 登 录
微 博 登 录