多列集合:2022

#博学谷IT学习技术支持#

个人笔记后续会进行内容改进

Map

格式:

interface Map<K,V>  K:键的类型;V:值的类型

特点:

- 双列集合,一个键对应一个值

- 键不可以重复,值可以重复

方法:

| 方法名                              | 说明                                 |

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

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

| void   clear()                      | 移除所有的键值对元素                 |

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

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

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

| int size()                          | 集合的长度,也就是集合中键值对的个数 |

代码:

public class MapDemo02 {

    public static void main(String[] args) {

        //创建集合对象

        Map<String,String> map = new HashMap<String,String>();

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

        map.put("张无忌","赵敏");

        map.put("郭靖","黄蓉");

        map.put("杨过","小龙女");

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

//        System.out.println(map.remove("郭靖"));

//        System.out.println(map.remove("郭襄"));

        //void clear():移除所有的键值对元素

//        map.clear();

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

//        System.out.println(map.containsKey("郭靖"));

//        System.out.println(map.containsKey("郭襄"));

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

//        System.out.println(map.isEmpty());

        //int size():集合的长度,也就是集合中键值对的个数

        System.out.println(map.size());

        //输出集合对象

        System.out.println(map);

    }

}

Map获取功能:

| 方法名                           | 说明                     |

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

| Set<K>   keySet()                | 获取所有键的集合         |

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

| Set<Map.Entry<K,V>>   entrySet() | 获取所有键值对对象的集合 |

代码:

public class MapDemo03 {

    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(map.get("张无忌"));

//        System.out.println(map.get("张三丰"));

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

//        Set<String> keySet = map.keySet();

//        for(String key : keySet) {

//            System.out.println(key);

//        }

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

        Collection<String> values = map.values();

        for(String value : values) {

            System.out.println(value);

        }

    }

}

entrySet:

public class MapDemo02 {

    public static void main(String[] args) {

        //创建集合对象

        Map<String, String> map = new HashMap<String, String>();

        //添加元素

        map.put("张无忌", "赵敏");

        map.put("郭靖", "黄蓉");

        map.put("杨过", "小龙女");

        //获取所有键值对对象的集合

        Set<Map.Entry<String, String>> entrySet = map.entrySet();

        //遍历键值对对象的集合,得到每一个键值对对象

        for (Map.Entry<String, String> me : entrySet) {

            //根据键值对对象获取键和值

            String key = me.getKey();

            String value = me.getValue();

            System.out.println(key + "," + value);

        }

    }

}

HashMap集合:

+ HashMap底层是哈希表结构的

+ 依赖hashCode方法和equals方法保证键的唯一

+ 如果键要存储的是自定义对象,需要重写hashCode和equals方法

 TreeMap集合:

+ TreeMap底层是红黑树结构

+ 依赖自然排序或者比较器排序,对键进行排序

+ 如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则

可变参数:

格式:

修饰符 返回值类型 方法名(数据类型… 变量名) {  }

可变参数的注意事项:

- 这里的变量其实是一个数组

- 如果一个方法有多个参数,包含可变参数,可变参数要放在最后

代码:

public class ArgsDemo01 {

    public static void main(String[] args) {

        System.out.println(sum(10, 20));

        System.out.println(sum(10, 20, 30));

        System.out.println(sum(10, 20, 30, 40));

        System.out.println(sum(10,20,30,40,50));

        System.out.println(sum(10,20,30,40,50,60));

        System.out.println(sum(10,20,30,40,50,60,70));

        System.out.println(sum(10,20,30,40,50,60,70,80,90,100));

    }

//    public static int sum(int b,int... a) {

//        return 0;

//    }

    public static int sum(int... a) {

        int sum = 0;

        for(int i : a) {

            sum += i;

        }

        return sum;

    }

}

创建不可变参数:

- 在List、Set、Map接口中,都存在of方法,可以创建一个不可变的集合

  - 这个集合不能添加,不能删除,不能修改

  - 但是可以结合集合的带参构造,实现集合的批量添加

- 在Map接口中,还有一个ofEntries方法可以提高代码的阅读性

  - 首先会把键值对封装成一个Entry对象,再把这个Entry对象添加到集合当中

代码:

public class MyVariableParameter4 {

    public static void main(String[] args) {

        // static <E>  List<E>  of(E…elements)  创建一个具有指定元素的List集合对象

        //static <E>  Set<E>  of(E…elements)    创建一个具有指定元素的Set集合对象

        //static <K , V>   Map<K,V>  of(E…elements) 创建一个具有指定元素的Map集合对象

        //method1();

        //method2();

        //method3();

        //method4();

    }

    private static void method4() {

        Map<String, String> map = Map.ofEntries(

                Map.entry("zhangsan", "江苏"),

                Map.entry("lisi", "北京"));

        System.out.println(map);

    }

    private static void method3() {

        Map<String, String> map = Map.of("zhangsan", "江苏", "lisi", "北京", "wangwu", "天津");

        System.out.println(map);

    }

    private static void method2() {

        //传递的参数当中,不能存在重复的元素。

        Set<String> set = Set.of("a", "b", "c", "d","a");

        System.out.println(set);

    }

    private static void method1() {

        List<String> list = List.of("a", "b", "c", "d");

        System.out.println(list);

        //list.add("Q");

        //list.remove("a");

        //list.set(0,"A");

        //System.out.println(list);

//        ArrayList<String> list2 = new ArrayList<>();

//        list2.add("aaa");

//        list2.add("aaa");

//        list2.add("aaa");

//        list2.add("aaa");

        //集合的批量添加。

        //首先是通过调用List.of方法来创建一个不可变的集合,of方法的形参就是一个可变参数。

        //再创建一个ArrayList集合,并把这个不可变的集合中所有的数据,都添加到ArrayList中。

        ArrayList<String> list3 = new ArrayList<>(List.of("a", "b", "c", "d"));

        System.out.println(list3);

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值