笔记:Java集合框架(一)

Java集合框架(一)

Collection接口

继承结构

笔记:Java集合框架(一)

Iterator接口

Iterator接口定义了迭代器的基本方法

java;gutter:true; hasNext() 如果迭代具有更多元素,则返回 true</p> <p>next() 返回迭代中的下一个元素</p> <p>remove() 从底层集合中删除此迭代器返回的最后一个元素</p> <pre><code> ### Collection接口,List接口,Set接口 Collection接口是所有List,Set集合的接口,所有集合框架都在java.util包下。 List,Set接口为他的实现类制定了详细的规则,其中List下的实现类是有序的,Set下的实现类是无序的。 在List的实现类中可以包含重复元素,但在Set的实现类中不能包含重复元素。 ### ArrayList ,LinkedList 类 **ArrayList 类**是基于数组实现的,为了解决数组只能设置固定长度而生。在ArrayList类中,集合长度是随着数组中元素而动态变化的,可以理解为长度动态变化的数组,初始容量为10 ,通常预估所需容量,减少扩容次数。 **LinkedList类**是一个双向链表,实用于需要大量随机插入元素时,ArrayList处理此问题性能较差。 双向链表实现了List和Deque接口。 实现所有可选列表操作,并允许所有元素。因为双向链表实现了Deque双端队列接口,因此双向链表可以作为队列来使用。 **ArrayList,LinkedList常用方法(List接口声名):** ;gutter:true;
Add(E e) 将指定元素添加到表尾

Add(int index , E element) 在指定位置插入元素

addAll(Collection c) 将Collection集合中的所有元素添加至表尾

addAll(int index , Collection c) 将Collection集合中所有的元素插入指定位置

addFirst(E e) 在列表开始插入元素

addList(E e) 在列表结尾插入元素

clear() 清空链表

contains(Object o) 如果链表包含此元素返回true

indexOf(Object o) 返回链表中第一次出现的索引

get(int index) 返回列表中指定位置的元素

isEmpty() 此链表不包含元素返回true

set(int index, E element) 用指定的元素(可选操作)替换此列表中指定位置的元素

LinkedList作为队列常用方法(Deque接口声名):

java;gutter:true; element() 检索但不删除第一个元素</p> <p>getFirst() 返回第一个元素</p> <p>getLast() 返回最后一个元素</p> <p>indexOf(Object o) 返回列表中指定元素第一次出现的索引</p> <p>element() 检索但不删除第一个元素</p> <p>getFirst() 返回第一个元素</p> <p>getLast() 返回最后一个元素</p> <p>offer(E e) 将指定元素添加到表尾</p> <p>offerFirst(E e) 在链表前插入指定元素</p> <p>offerLast(E e) 在列表尾插入指定元素</p> <p>peek() 检索但不删除第一个元素</p> <p>peekFirst() 检索但不删除此列表的第一个元素</p> <p>peekLast() 检索但不删除此列表的最后一个元素</p> <p>poll() 检索并删除此列表的头(第一个元素)</p> <p>pollFirst() 检索并删除此列表的第一个元素</p> <p>pollLast() 检索并删除此列表的最后一个元素</p> <p>pop() 从此列表表示的堆栈中弹出一个元素</p> <p>push(E e) 将元素推送到由此列表表示的堆栈上</p> <p>remove() 检索并删除此列表的头</p> <p>remove(int index) 删除该列表中指定位置的元素</p> <p>remove(Object o) 从列表中删除指定元素的第一个出现</p> <pre><code> ### TreeSet,HashSet类 TreeSet类是一个基于红黑树(自平衡二叉树)实现的集合,唯一,无序性。 HashSet 类是一个基于哈希表实现的集合( 底层由HashMap实现 ),唯一不可重复。 两者都是非线程安全的。 HashMap 底层将处理方法几乎完全交给HashMap处理 ,HashMap的数据存储是通过链表+红黑树+数组实现的,首先通过hash函数计算在数组中存储位置,如果该位置已经有值了,判断key是否相同,如果相同则覆盖,不相同放到元素对应的链表中(通过链表+红黑树解决哈希冲突问题),如果链表长度大于8,就转化为红黑树。 **常用方法(Set接口声名):** ;gutter:true;
add(E e) 如果指定的元素不存在,则将其指定的元素添加

addAll(Collection c) 将指定集合中的所有元素添加到此集合

clear() 从此集合中删除所有元素

contains(Object o) 如果此集合包含指定的元素,则返回 true

containsAll(Collection c) 判断集合是否全部包含指定集合的所有元素

isEmpty() 如果此集合不包含元素,则返回 true

iterator() 返回此集合中元素的迭代器

remove(Object o) 如果存在,则从该集合中删除指定的元

removeAll(Collection c) 从此集合中删除指定集合中包含的所有元素

retainAll(Collection c) 仅保留该集合中包含在指定集合中的元素

size() 返回此集合中的元素数

toArray() 返回一个包含此集合中所有元素的数组

toArray(T[] a) 返回一个包含此集合中所有元素的数组

参考文档JDK1.8 官方文档

Original: https://www.cnblogs.com/coisini-zheng/p/15911683.html
Author: 俭谨
Title: 笔记:Java集合框架(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/610305/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【MQTT】使用MQTT.fx上报温度到腾讯云

    打开 腾讯云官网, 注册并登录. 2.登录之后点击右上角的控制台点进去 3.在搜索框[物联网通信],点击进入 4.点击创建新产品 5.选择普通产品,名称随便,选择密钥认证,选择js…

    Linux 2023年6月13日
    092
  • SpringBoot 搭建基于 MinIO 的高性能存储服务

    1.什么是MinIO MinIO是根据GNU Affero通用公共许可证v3.0发布的高性能对象存储。它与Amazon S3云存储服务兼容。使用MinIO构建用于机器学习,分析和应…

    Linux 2023年6月7日
    097
  • Python的闭包是什么意思?

    闭包算是编程语言里一个比较常见的概念,但说实话,这个名词有点晦涩。在查看了半天网上的资料后,还是有点不明就里。 我疑惑的点主要是:这个东西是用来解决什么问题的?或者说,他的作用是什…

    Linux 2023年6月8日
    094
  • Linux文件属性及权限

    Linux文件属性及权限 首先我们以root用户的身份登录linux,执行ls -al 查看文件: 文件类型: 【d】 代表目录(directory)、【-】代表文件、【l】代表链…

    Linux 2023年6月11日
    086
  • MSSQL·CONCAT函数的基础使用

    | 0.47分钟 | 752.8字符 | 1、应用场景 2、基础使用 3、声明与参考资料 | SCscHero | 2022/5/13 PM10:18 | 系列 | 已完成 每一个…

    Linux 2023年6月14日
    082
  • 【小记】Linux 快速查找并结束僵尸进程

    Linux SSH 连接后显示: There is 1 zombie process. 说明当前正在运行的系统当中存在1个僵尸进程正在无意义消耗资源。 ==============…

    Linux 2023年6月13日
    0113
  • PHP使用pdfparser实现对PDF转换成本文

    使用pdfparser对PDF转换成文本形式,转换后没有格式。 原始PDF: 转换成文本: 第一步:安装pdfparser composer require smalot/pdfp…

    Linux 2023年6月7日
    0113
  • Shell语法

    在 Shell 中引号分为 2 种:单引号、双引号。 ( 1 )双引号 由双引号括起来的字符,除 $ 、倒引号和反斜线( \ )仍保留其特殊功能外,其余字符通常作为普通字符对待。 …

    Linux 2023年5月28日
    084
  • Tmux 配置

    前面提到的窗口管理只是 tmux 功能的一小部分,另一个很有用的功能就是,连接到远程主机之后,一旦断开,那么当前账户登录的任务就被取消了,但是使用 tmux 可以在断开之后继续工作…

    Linux 2023年6月7日
    089
  • Spring5 学习笔记

    学习地址: B站-动力节点 个人代码: GitHub Spring 概述 1.1 Spring 简介 Spring Framework 是一个使用Java开发的、轻量级的、开源框架…

    Linux 2023年6月14日
    083
  • Monte Carlo 机器人定位——基于直方图过滤器的机器人定位方法

    本文为学习课程:https://classroom.udacity.com/courses/cs373 后的相关阶段总结,供个人学习也供大家参考。如有表述不当之处欢迎评论区指出。 …

    Linux 2023年6月14日
    0122
  • python爬虫_入门

    本来觉得没什么可写的,因为网上这玩意一搜一大把,不过爬虫毕竟是python的一个大亮点,不说说感觉对不起这玩意基础点来说,python2写爬虫重点需要两个模块,urllib和url…

    Linux 2023年6月6日
    084
  • k8安装

    1.安装k8s之前需要安装docker,etcd 因为要在k8s的pod中运行容器,需要先安装 容器运行时(Container Runtimes ) 几种常见的容器运行时与 Kub…

    Linux 2023年6月13日
    088
  • SpringSecurity

    SpringSecurity 11.1 SpringSecurity简介 Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spr…

    Linux 2023年6月14日
    093
  • protobuf 的交叉编译使用(C++)

    为了提高通信效率,可以采用 protobuf 替代 XML 和 Json 数据交互格式,protobuf 相对来说数据量小,在进程间通信或者设备之间通信能够提高通信速率。下面介绍 …

    Linux 2023年6月7日
    0136
  • yum源安装nginx

    nginx使用yum源安装 安装步骤 使用yum源安装依赖 yum install yum-utils 配置nginx.repo的yum文件 vim /etc/yum.repos….

    Linux 2023年6月8日
    0110
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球