复习javase集合

1、为什么要有集合?

数组长度需要在初始化时确定大小,数据结构单一、因此集合出现了

2、数组和集合的区别

区别一:数组既可以存储基本数据类型,又可以存储引用类型,集合只能存储引用类型

区别二:数组在初始化的时候就需要确认大小,集合有默认初始大小和扩容机制

区别三:集合类有丰富的封装方法

UML图

粗边框的是常用的的类,虚线边框是接口

集合的两大接口

Collection 接口

常用方法:

方法名 说明 返回类型 参数
add 添加元素到末尾 boolean 添加的元素对象
addAll 合并另一个Collection boolean 实现了Collection的集合
contains 检查是否包含某个元素 boolean 元素对象
containsAll 检查是否包含集合 boolean 实现了Collection的集合
isEmpty 集合是否为空 boolean 无参
remove 移除元素 boolean 元素对象
removeAll 移除集合中有另一个集合的元素 boolean 实现了Collection的集合
size 返回集合大小 int 无参
toArray 转换成数组 [ ] 无参

遍历方式:

  • 迭代器 Iterator (需要删除元素时推荐用这个)
  • forEach

实现接口:List、Set

List常用方法

方法名 说明 返回类型 参数
add(String item, int index) 添加元素到指定位置 void 索引,元素
addAll(int index, Collection<? extends E> c) 添加集合到指定位置 boolean 索引,集合
get(int index) 获取值 元素 索引
indexOf(Object o) 判断List中是否有这个元素,有返回索引,无返回-1 int 元素
listIterator() 返回List迭代器 ListIterator 无参
listIterator(int index) 返回List迭代器,光标移动到参数索引处 ListIterator 索引
remove(int index) 移除List元素 元素 索引
set(int index, E element) 替换元素 元素 索引,元素
subList(int fromIndex, int toIndex) 分割List List 开始索引,结束索引
retainAll(Collection<?> c) 仅保留包含在指定集合中的此集合中的元素 boolean Collection
lastIndexOf(Object o) 返回此列表中指定元素的最后一个发生的索引,如果没有返回-1 int 元素

List特有遍历方式:

  • get
  • List迭代器
List常用实现类
  1. ArrayList

    特点:查找速度快,删除添加元素慢,因为底层使用数组,索引位置变化,大于索引的都要往前移一个,线程不安全
  2. LinkedList

    特点:查找速度慢,删除添加元素速度快,因为底层使用链表,需要从头或者从尾开始一个一个查找,复杂度为O(n),删除添加只需要改变上一个节点的引用即可,线程不安全

Set常用方法

方法名 说明 返回类型 参数
retainAll(Collection<?> c) 仅保留包含在指定集合中的此集合中的元素 boolean Collection
... ... ... ...
Set特点:

无序,存储元素不可重复,元素必须重写hashCode和equlas方法

Set常用实现类
  1. HashSet

    特点:元素完全使用HashMap的key来存储,线程不安全

  2. TreeSet

    特点:使用红黑树为元素排序,更改默认排序有两种方式

    • 构造函数中传入Comparator
    • 元素实现Comparable

    线程不安全

  3. LinkedHashSet

    特点:HashSet的子类,使用链表来存储插入的顺序,value是LinkedHashMap的key。需要遍历完全部元素的情况下比HashSet效率高。线程不安全

Map接口

常用方法:

方法名 说明 返回类型 参数
put 添加 void key,value
putAll 合并另一个Map void 实现了Map的集合
containsKey 是否包含key boolean key
containsValue 是否包含这个值 boolean value
keySet 返回Map所有的key Set 无参
values 返回Map所有的value Collection 无参
entrySet 返回key value Entry 无参
remove 删除 value key
remove 如果key和value相匹配则删除 boolean key,value
size 返回有多少个元素 int 无参
clear 清除 void 无参

遍历方式:

  • entrySet (最常用 性能好)
  • values
  • keySet
  • Iterator

javase集合 温故而知新的更多相关文章

  1. JavaSE集合(十)之Map

    前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...

  2. JavaSE集合(八)之Map

    前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族.以前的时候学习Map的时候没有很认真的去学习,我觉得很多东西还是不是很清楚. 这次我将总结的 ...

  3. JavaSE集合基础总览

    Java集合 Java集合,也称之为容器.基本上你写所有的Java程序,都必须要用到一个包.该API基本都位于java.util工具类包中,是JavaSE中的重中之重.简单可以总结为“1136”,分别 ...

  4. JavaSE| 集合

    集合 l  Collection 层次结构中的根接口.Collection 表示一组对象,这些对象也称为 collection 的元素.一些 collection 允许有重复的元素,而另一些则不允许. ...

  5. JavaSE 集合概述

    1.对象的存储: 数组(基本数据类型 & 引用数据类型) 集合(引用数据类型) 2.集合框架 Collection 接口: 方法: iterator().toArray();  迭代器遍历集合 ...

  6. [javaSE] 集合框架(体系概述)

    为什么出现集合类 为了方便对多个对象的操作,对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合的不同 数组是固定长度的,集合是可变长度的 数组可以存储基本数据类型,集合只能存储对象 数组只能 ...

  7. JavaSE 集合补充点(JDK1.9对集合添加的优化)

    通常,我们在代码中创建一个集合(例如,List 或 Set ),并直接用一些元素填充它. 实例化集合,几个 add方法调用,使得代码重复. public class Demo01 { public s ...

  8. [javaSE] 集合框架(共性方法)

    Collection接口的常用方法 add(),添加一个元素 addAll(),添加一组元素 clear(),清空 remove(),移除一个 removeAll(),移除一组 size(),元素个数 ...

  9. [javaSE] 集合框架(TreeSet)

    TreeSet:可以对Set集合中的元素排序,默认按照ascii表排序,二叉树结构 左边叉是小的,右边叉是大的 存储自定义对象 定义一个类Student实现Comparable类,使自定义类具备比较性 ...

随机推荐

  1. leedcode算法

    1.LeetCode - 合并两个链表 2. 3. 链表是否有环       https://jingyan.baidu.com/article/066074d69afb8d83c31cb068.ht ...

  2. Spring Data Jpa 更新操作

    第一步,通过Repository对象把实体根据ID查询出来 第二部,往查出来的实体对象进行set各个字段 第三步,通过Repository接口的save方法进行保存 保存和更新方式(已知两种) 第一种 ...

  3. spring-boot-learning-RabbitMQ

    为什么需要MQ??? 异步处理: 场景: 用户注册后,需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式 2.并行的方式` 用户注册-发送注册邮箱-发送注册短信都完成之后才结束返回给客户端 邮 ...

  4. js Object扩展自定义方法,jQuery抛出 Uncaught TypeError: matchExpr[type].exec is not a function

    使用Jquery的时候,想在Object原型上添加自己扩展的方法的时候,启动项目之后,打开网页就会报如上错误信息,经过测试,可以在Object下的具体类型上进行扩展自定义方法,如String,Arra ...

  5. 使用jquery

    在https://jqueryui.com/download/把样式下载下来 然后解压复制到之前的文件夹里面 再到https://jqueryui.com/tabs/#mouseover里面找到一段代 ...

  6. servlet中的HttpServletRequest对象

    HttpServletRequest对象表示客户端浏览器发起的请求,当客户端浏览器通过HTTP协议访问服务器时,Tomcat会将HTTP请求中的所有信息解析并封装在HttpServletRequest ...

  7. fsdfd

    static int kWeiOfVal(int val, int k) { int n = 1; int temVal = val; int result; while (1) { temVal = ...

  8. CSS5:移动端页面(响应式)

    CSS5:移动端页面(响应式) 如果手机端和PC端页面差别很大,就不要写响应式,不要写@media 就直接将两个页面拆开成两个文件就可以了.关于判断是手机端你还是PC端,就交给后端来做只有一些新闻站点 ...

  9. 前端性能优化(JavaScript篇)

    正巧看到在送书,于是乎找了找自己博客上记录过的一些东西来及其无耻的蹭书了~~~ 小广告:更多内容可以看我的博客 优化循环 如果现在有个一个data[]数组,需要对其进行遍历,应当怎么做?最简单的代码是 ...

  10. Python中使用模块和库编程

    """ python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun ...