大数据学习Day16---Javase

一、学习笔记

<1>.LinkedHashSet

java.util.LinkedHashSet  extends HashSet
            特点
                 底层数据结构是 链表+ 哈希表
                         链表保证元素有序  哈希表保证元素唯一
                                              先比较hashCode
                                                    不同 添加到集合
                                                    相同 继续比较equals
                                                         不同 添加
                                                         相同 不添加

<2>.Map集合

1.java.util.Map<K,V> 双列集合顶层接口

     K: key 键 键是唯一的
     V:value 值 值是可以重复的

        方法
             public V put(K key, V value):  把指定的键与指定的值添加到Map集合中。 返回值一般是null值 如果键相同 值会覆盖 会返回被覆盖的值
             public V get(Object key) 根据指定的键,在Map集合中获取对应的值。
             public boolean containsKey(Object key) 判断是否包含指定键
             public V remove(Object key ) 根据键删除一对元素 并返回被删除的值

        常用实现类
             TreeMap
                 键 排序 唯一
             HashMap
                 键 无序 唯一
             LinkedHashMap
                 键 有序 唯一

public class Demo01_Map {
    public static void main(String[] args) {
        Map<String,Integer>  map =  new TreeMap<>();
//        map = new HashMap<>();
//        map = new LinkedHashMap<>();

        map.put("杨幂",38);
        map.put("唐嫣",18);
        map.put("周也",138);
        map.put("曾黎", 8);
        //如果键相同 值会覆盖 会返回被覆盖的值
//        Integer in = map.put("大郎", 108);
//        System.out.println(in);

        System.out.println(map);

//        //根据键找值
//        Integer integer = map.get("杨幂");
//        System.out.println(integer);
//
//        //判断集合是否包含指定键
//        boolean b = map.containsKey("杨幂");
//        System.out.println(b);
        //根据键删除一对元素 返回被删除的值
        Integer removeValue = map.remove("杨幂");
        System.out.println(removeValue);
        System.out.println(map);

    }
}

2.JDK1.8后

public class Demo02_Map {
    public static void main(String[] args) {
        Map<String,Integer> map =  new TreeMap<>();
        map.put("杨幂",38);
        map.put("唐嫣",18);
        map.put("周也",138);
        map.put("曾黎", 8);
        //添加元素 键相同 值不覆盖 返回原来的值
//        Integer value = map.putIfAbsent("曾黎", 108);
//        System.out.println(value);
//        System.out.println(map);
        //根据键找值 如果有指定键 返回对应的值 如果没有给定键 则返回给定的默认值
//        Integer value2 = map.getOrDefault("杨幂2", 100);
//        System.out.println(value2);

        //根据键和值删除 一对元素 键和值都相同 才能删除
        boolean b = map.remove("杨幂", 38);
        System.out.println(b);
        System.out.println(map);
        //1.8 默认方法
//        map.forEach(new BiConsumer<String, Integer>() {
//            @Override
//            public void accept(String key, Integer value) {
//                System.out.println(key+" "+value);
//            }
//        });

  //      map.forEach((k,v)-> System.out.println(k+" "+v));

    }
}

3.1. Map集合的第一种遍历方式
          核心方法
              Set<K> keySet() 获取存储所有键的Set集合

       1.定义Map集合 添加数据
       2.调用keySet方法 获取存储所有键的Set集合
       3.遍历Set集合 依次获取到每个元素(Map集合的key)
       4.调用Map集合的get方法 根据键找到对应的值

public class Demo03_Map {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();

        map.put("柳岩",38);
        map.put("唐嫣",18);
        map.put("金莲",138);
        map.put("大郎", 8);

        // 2.调用keySet方法 获取存储所有键的Set集合
        Set<String> set = map.keySet();

        //迭代器
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            // 3.遍历Set集合 依次获取到每个元素(Map集合的key)
            String key = it.next();
            //4.调用Map集合的get方法 根据键找到对应的值
            Integer value = map.get(key);
            System.out.println(key+" = "+value);
        }

        //增强for
        for(String key : set){
            System.out.println(key+" = "+map.get(key));
        }

    }
}

3.3. Map集合的第二种遍历方式

             核心方法
                  Set<Map.Entry<K,V>> entrySet()  获取到存储结婚证(键值对映射关系对象)的Set集合

     1.创建Map集合 添加数据
     2.调用entrySet 获取到存储结婚证(键值对映射关系对象)的Set集合
     3.遍历Set集合 依次获取到每个结婚证 对象
     4.调用结婚证对象的方法 获取到 键 和值
                K getKey()
                V getValue()

public class Demo04_Map {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();

        map.put("柳岩",38);
        map.put("唐嫣",18);
        map.put("金莲",138);
        map.put("大郎", 8);
        //2.调用entrySet 获取到存储结婚证(键值对映射关系对象)的Set集合
        Set<Map.Entry<String,Integer>> set =  map.entrySet();

        //迭代器
        Iterator<Map.Entry<String,Integer>> it = set.iterator();
        while(it.hasNext()){
            //3.遍历Set集合 依次获取到每个结婚证 对象
            Map.Entry<String,Integer> en  = it.next();
            // 4.调用结婚证对象的方法 获取到 键 和值
            String key = en.getKey();
            Integer value = en.getValue();
            System.out.println(key + " = "+value);

        }

        for(Map.Entry<String,Integer> en: set){
            System.out.println(en.getKey() + " = "+en.getValue());
        }

    }
}

4.HashMap

java.util.HashMap
          底层数据结构是哈希表   允许null键和null值
               键 无序 唯一
                      先比较hashCode
                            不同  元素不相同
                            相同  继续比较equals
                                   相同
                                   不同
          HashMap集合 自定义类型作为键 需要重写hashCode和equals方法 保证键的唯一

5.TreeMap

 java.util.TreeMap
          特点
            底层数据结构是红黑树  不允许null键 允许null值
                键 排序  唯一

          构造方法
               public TreeMap() 如果是空参构造 集合中的键 必须实现自然排序接口
               public TreeMap(Comparator c)  如果带参构造 需要传入一个比较器对象  键是否实现自然排序接口都可以

               public TreeMap(Map<? extends K,? extends V> m)

          不允许null键 允许null值

6.Properties

 java.util.Properties
          特点
             1.继承自Hashtable 实现了Map接口
             2.没有泛型 键String 值String
             3.唯一一个可以和IO流直接结合使用的集合

          方法
              setProperty(String key,String value)  添加元素  相当于  put
              getProperty(Object key) 根据键找值  相当于 get
              Set<String> stringPropertyNames() 获取存储键的Set集合  相当于 keySet

<3>.可变参数

JDK 1.5  可变参数
          前提
              参数类型确定
              参数个数不确定

          格式
               数据类型...参数名
               可以传入当前类型任意个数据

               可变参数本质上就是数组 可以直接传数组

           注意事项
             1.一个方法只能有一个可变参数
             2.如果方法有多个参数 可变参数放到最后
             3.最牛的可变参数 Object...obj 任意类型 任意个数

二、今日总结

放松了一下心情,整理了最近的知识块,收心,认真学习吧!

 三、明日计划

认真听讲,提高效率,目标立到且做到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值