java学习笔记之集合家族2
集合体系
一.数据结构
- List集合储存数据结构
<1>堆栈结构
特点:先进后出
<2>队列结构
特点:先进先出
<3>数组结构
特点:查询快,增删慢
<4>链表结构
特点:增删快,查询慢
二.List接口
Java.util.List 接口(集合)extends Collection 接口
List接口的特点:
允许存储重复元素
是一个有序集合(存储元素的顺序和取出元素的顺序一致)存123 取出123
有索引,包含一些带索引的特有方法(有三种遍历方式:迭代器,增强for,普通 for)
带索引的特有方法:
- add(int index, E e);在指定索引上添加元素
- E remove(int index); 移除并返回指定索引处的元素
- E set(index int , E e);修改并返回指定索引上的元素
- E get(int index); 返回列表中指定位置的元素;
注意:
操作索引方法时,一定要避免索引越界异常
IndexOutOfBoundException:索引越界异常,集合会报
StringIndexOutOfBoundException:字符串索引越界异常
ArrayIndexOutOfBoundException:数组索引越界异常
三.ArrayList<E>集合
特点:
底层是一个数组结构,查询快,增删慢;
有序集合
允许存储重复数据
四.Vector集合
Jdk1.0出现,单线程,线程安全集合
五.LinkedList<E> 集合
Java.util.LinkedList<E> 集合implements List<E>
特点:
底层是一个双向链表结构,查询慢,增删快;
存取是有序的
允许重复元素
LinkedList特有的方法:
增加的方法:
- void addFirst(E e) 将指定元素插入到此列表的开头
- void push(E e) 将元素插入此列表的开头。此方法等效于addFirst(E e)
- void addList(E e) 将指定元素添加到列表的结尾,相当于add(E e);
删除的方法:
- E removeFirst();移除并返回此列表的第一个元素
- E removeLast();移除返回列表的最后一个元素;
- E pop()移除并返回此列表的第一个元素,此方法等效于removeFrist()
获取的方法:
- E getLast(); 获取最后一个元素
- E getFrist(); 获取第一个元素
- Boolean isEmpty();判断列表是否为空
六.Set集合
Java.util.Set接口(集合) extends Collection 接口
Set接口的特点:
- 不允许有重复的元素
- 没有索引,不能用普通for遍历
七.HashSet<E>
Java.util.HashSet<E> 集合implements Set接口
HashSet<E> 接口的特点
- 底层原理是一个哈希表(数组+单向列表),查询快,增删快
- 无序集合,存储的顺序有可能跟取出的顺序不一致
使用HashSet<E> 存储元素唯一的原理:重写hashCode()方法和equals()方法;
使用HashSet add方法存储元素的时候,会自动调用hashCode();方法,然后对集合中的元素的哈希值进行比较,如果没有相同的哈希值,则会存入。如果哈希值有相同的,则会调用equals()方法,判断相等,如果相等不存入, 不相等存入
八.LinkedHashSet<E>
Java.util.LinkedHashSet 集合 extends HashSet集合
LinkedHashSet<E>特点:
- 底层原理:哈希表(数组+单向链表)+双向链表。
- 双向链表可以保证元素存取有序。但元素要求不能重复
九.哈希值
就是一个十进制的整数,有操作系统随机给出
可以使用Object类中的方法hashCode获取哈希值
int hashCode()返回该对象的哈希码值;
源码:
Public native int hashCode();
native:指调用了本地操作系统的方法实现
十.ArrayList<E> 集合储存不重复元素的的方法:
- boolean contains(Object o); 方法判断是否包含指定元素
- 将ArrayList的元素遍历添加到Set 集合中
- 使用HashSet集合的构造方法;HashSet(Collection <? extends E> c)
java学习笔记之集合家族2的更多相关文章
- java学习笔记之集合家族1
集合 集合介绍: 由于数组中存放对象,对对象操作起来不方便.java中有一类容器,专门用来存储对象. 集合与数组的区别: 1.数组的长度固定的,而集合长度时可变的 2.数组只能储存同一类型的元素,而且 ...
- Java学习笔记之---集合
Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...
- Java学习笔记之集合
集合(Collection)(掌握) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组而数组的长度固定 ...
- 【原】Java学习笔记026 - 集合
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:从三国演义中 ...
- 【Java学习笔记】集合转数组---toArray()
package p2; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ...
- 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素
import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...
- 【原】Java学习笔记028 - 集合
package cn.temptation; import java.util.HashSet; import java.util.Set; public class Sample01 { publi ...
- 5.3类集(java学习笔记)集合的输出
一.集合的输出 迭代输出:Iteratror接口 在输出集合时,最标准的方法是使用迭代器迭代输出. 1,List中的迭代器. Iterator中包含三个方法: hasNex()t判断集合内是否有元素存 ...
- java学习笔记——Collection集合接口
NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...
随机推荐
- Windows解决anaconda下双python版本安装TensorFlow
首先,就是双版本anaconda的安装: 以前安装好的是python2.7版本,而TensorFlow的安装仅支持3.5版本的.但是自己本来的2.7版本又不想遗弃.所以安装双版本的: 在anacond ...
- Java面试题解构
有次一个同事让我一同去面试一个候选人,没仔细看简历,所以在问了设计模式之后就让他谈一谈对内存泄漏和垃圾回收的理解,当时候选人一下子就懵了.后来才知道,他面的是初.中级开发职位,想来估计候选人心里也在骂 ...
- dubbo专题」dubbo其实很简单,就是一个远程服务调用的框架(1)
一.dubbo是什么? 1)本质:一个Jar包,一个分布式框架,,一个远程服务调用的分布式框架. 既然是新手教学,肯定很多同学不明白什么是分布式和远程服务调用,为什么要分布式,为什么要远程调用.我简单 ...
- 【Python】Non-ASCII character '\xe6' 错误解决方法
刚刚在写Python程序的时候遇到了一个问题,无论是在程序中什么地方出现中文字符,都会出现如下错误 SyntaxError: Non-ASCII character '\xe6' 网上查阅了一下这应该 ...
- 一:Redis的7个应用场景
Redis的7个应用场景 一:缓存——热数据 热点数据(经常会被查询,但是不经常被修改或者删除的数据),首选是使用redis缓存,毕竟强大到冒泡的QPS和极强的稳定性不是所有类似工具都有的,而且相 ...
- HTML5原生拖拽/拖放⎡Drag & Drop⎦详解
前言 拖放(drap && drop)在我们平时的工作中,经常遇到.它表示:抓取对象以后拖放到另一个位置.目前,它是HTML5标准的一部分.我从几个方面学习并实践这个功能. 拖放的流程 ...
- Spring AOP高级——源码实现(3)AopProxy代理对象之JDK动态代理的创建过程
spring-aop-4.3.7.RELEASE 在<Spring AOP高级——源码实现(1)动态代理技术>中介绍了两种动态代理技术,当然在Spring AOP中代理对象的生成也是运用 ...
- TensorFlow[1]:概念和简例
简介 TensorFlow是一个实现机器学习算法的接口,也是执行机器学习算法的框架.使用数据流式图规划计算流程,可以将计算映射到不同的硬件和操作系统平台. 主要概念 TensorFlow的计算可以表示 ...
- Nodejs学习笔记(十六)--- Pomelo介绍&入门
目录 前言&介绍 安装Pomelo 创建项目并启动 创建项目 项目结构说明 启动 测试连接 聊天服务器 新建gate和chat服务器 配置master.json 配置servers.json ...
- Chapter 8: Exceptional Control Flow
概述: 我们可以用一种“流”的概念来理解处理器的工作流程,PC(Program Counter)依次为a0,a1,a2,...,an-1,这个序列可以称作control flow.当然我们并不总是按顺 ...