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()方法

原文地址:https://www.cnblogs.com/bigorangehasc/p/8639464.html