• java学习--基础知识进阶第七天--笔记


    今日内容
    Set
    Map

    集合的体系
    单列集合
    Collection
      |-List:有序,有索引,可以存储重复元素
        |-ArrayList:底层是数组结构
        |-LinkedList:底层是链表结构
      |-Set:无序,无索引,不能存储重复元素
        |-HashSet:底层是哈希算法
        |-LinkedHashSet:唯一一个可以保证有序的、不能存储重复元素的类,没有自己的方法,全部继承自父类
    双列集合
    Map
      |-HashMap

    Set接口
    HashSet存储字符串并遍历
    步骤:
    // 创建集合
    // 添加元素,使用add
    // 遍历

    HashSet存储自定义对象并遍历
    HashSet保证元素唯一性的原理
    add()方法底层依赖于hashCode()和equals()
    首先执行hashCode()获取哈希值
    如果哈希值不同,则直接添加
    如果哈希值相同,在调用equals()方法,如果结果相同,表示是相同元素,就不添加
    如果equals()方法的结果不相同,则直接添加

    注:hashCode()方法一定会执行,但是equals()方法不是一定会执行

    Collections工具类
    常用方法
    static int binarySearch(List list, Object key) 使用二分查找法查找指定元素在指定列表的索引位置
    static void copy(List dest, List src) :是把源列表中的数据覆盖到目标列表
    static void fill(List list, Object obj) :使用指定的对象填充指定列表的所有元素
    static void reverse(List list) :反转
    static void shuffle(List list):随机置换
    static void sort(List<T> list) :按照列表中元素的自然顺序进行排序
    static void swap(List list, int i, int j) :将指定列表中的两个索引进行位置互换

    斗地主洗牌发牌游戏

    Map
    Map的概述
    将键映射到值的对象,存储的是键值对数据
    键唯一,如果键相同,值覆盖,每一个键对应一个值,值不是唯一的

    add("张三");
    add("李四");

    //put("张三",18);
    put("张三",19);
    put("李四",18);
    Map和Collection的区别
    Map是双列集合的顶层接口,存储的是键值对这样有对应关系的一对数据,键不能重复
    Collection是单列集合的顶层接口,存储的是单个数据,子体系不同,有不同的特点,
    List是有序有索引可以存储重复,Set是无序索引不能存储重复

    Map接口中的方法
    添加
    V put(K key,V value):添加键值对,如果键不存在,返回null,如果键存在,值替换,返回被替换的值
    获取
    int size():获取键值对的对数
    V get(Object key):根据键获取值
    Set<K> keySet():获取所有的键的集合
    Collection<V> values():获取所有的值的集合
    删除
    void clear():清空map集合
    V remove(Object key):根据键删除键值对,返回对应的值

    判断功能
    boolean containsKey(Object key):判断是否包含指定的键
    boolean containsValue(Object value):判断是否包含指定的值
    boolean isEmpty():判断是否为空

    Map的两种遍历方式
    方式一:keySet()和get(Object key)

    方式二:entrySet()获取所有的键值对对象的Set集合,遍历Set集合获取每一个键值对对象Map.Entry,再
    通过Entry中的getKey()和getValue()方法获取键和值

    Map集合存储元素,键为自定义对象
    需要重写自定义类的hashCode()和equals()方法

  • 相关阅读:
    LightOj 1016
    uva 127 "Accordian" Patience 简单模拟
    hdu 1180 诡异的楼梯 BFS + 优先队列
    UVALive 3907 Puzzle AC自动机+DP
    HDU 4001 To Miss Our Children Time DP
    HDU 4000 Fruit Ninja 树状数组
    hdu_1021_Fibonacci Again_201310232237
    hdu_1005_Number Sequence_201310222120
    hdu_1029-Ignatius and the Princess IV_201310180916
    hdu_1020_Encoding_201310172120
  • 原文地址:https://www.cnblogs.com/bigorangehasc/p/8639464.html
Copyright © 2020-2023  润新知