| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 集合类—List、Map、Set的简单用法 -> 正文阅读 |
|
[数据结构与算法]集合类—List、Map、Set的简单用法 |
目录 1.集合类集合类用来存储元素,集合类中若用到基本数据类型,必须使用包装类。JDK中的集合类只能存储类的对象,基本数据类型无法直接存入集合类中,使用包装类如List<Integer> JDK中java.util的集合框架jcl2.ListList接口(线性表接口): ArrayList:动态数组,要保存的元素个数不确定,动态变化 LinkedList:链表 1)List中的增删查改操作a.增加 1)add(任意数据类型 新值)【add方法默认在集合末尾添加】 2)add(int index,任意数据类型):在索引为index的位置插入新元素 b.查找 1)get(int index):返回index位置的元素值 2)boolean contains(元素值):判断List中是否包含指定值 c.改 set(int index,新值):修改index位置元素为新元素,返回修改前的元素值 d.删除 1)remove(int index):删除指定位置元素 2)remove(元素值):按值删除,默认删除第一个元素 eg:增查改
?eg:删
总: 2)遍历List集合与Set集合:for-each循环若不是要遍历具体的每个值,而是想打印集合中的内容,直接调用println方法传入对象即可(集合类覆写了toString),如果要取出具体的某个元素:for-each遍历
3)List接口实现杨辉三角问题?分析:杨辉三角特点 1)每一行元素个数和行数相同 2)每一行第一个元素和最后一个元素都是1,固定值 3)第i行第j列等于第i-1行j-1列+i-1行第j列【[i,j]=[i-1,j-1]+[i-1,j]】每一行第一个和最后一个元素都是1,此处j至少从第二列开始计算 注意:i和j表示实际行数和列数,默认都从1计数,但是索引都是从0开始计数的,因此和实际的行和列遍历时注意索引
3.Set接口1)概念a.一次存储一个不重复元素:方便进行元素去重处理 b.Set接口,元素的添加顺序和插入顺序没有太大关系(HashSet类) c.Set是List接口的子接口,只是元素插入有了不重复的限制,其他用法和List差不多【看见Set和Map天然就是一个查找或者搜索的语义】 2)插入:set.add
ps:如果做题时需要添加的元素不是重复元素,或者换句话说,对第一次出现的元素做出特殊处理,就可以利用Set集合的add方法的返回值来巧妙处理。 eg:
?结果: ?分析:不能保证插入顺序和添加元素顺序一致(元素的添加顺序和插入顺序没有太大关系) 原因(本质):使用HashSet时,一定要注意,元素的插入顺序与实际存储顺序无关,本质是因为hash的值不一定有序。 扩展:如果一定要得到插入顺序等于添加顺序(插入顺序与存储数据相同),要使用LinkedHashSet<>();
3)查找:set.contains4)注意:set集合没有修改元素的方法4.Map接口1)概念做题用到的最多的一个集合,没有之一,前面的List和Set都是一次存储一个元素,而Map接口是一个映射关系,一次存储两个元素 key==value的关系(键值对元素:key不重复,value可能会重复,一个key一定对应一个value,拿着key找value)。Map中,要求key不重复,Value可以重复。 eg:学校中,学号和姓名就是key,value的关系 2)添加/修改:put(K key, V value)将key和对应value存储到Map中,若key已经存在,则更新value值为新插入的值 当key在Map中不存在,则是添加,若key已存在,则是修改。 eg:
?结果: ?分析:key重复时,更新value 3)查找1.根据指定的key查找value1)v?value=map.get(key) 根据key取出映射的value,若key不存在,返回null。 ?2)V value=map.getOrDefault(key,defaultValue) 根据key取出映射的Value,若key不存在,返回默认值。 2.判断key或value是否存在1)判断当前Map中是否包含指定key:boolean containsKey(key) 2)判断当前Map中是否包含指定Value:boolean containsValue(value)
4)删除?1)map.remove(key):删除整个键值对,返回删除前的key对应的value,不存在返回null
?5)Map集合的遍历:一般不去遍历获取Map当前所有key值集合获取Map当前所有value值集合?若想遍历Map中键值对:转为Set若想依次取出Map中一个个键值对进行遍历,需要将Map集合转为Set集合后进行遍历 ?eg:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 18:42:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |