集合体系

一.数据结构

  1. List集合储存数据结构

    <1>堆栈结构

      特点:先进后出

      

    <2>队列结构

      特点:先进先出

    <3>数组结构

      特点:查询快,增删慢

      

    <4>链表结构

      特点:增删快,查询慢

      

二.List接口

  Java.util.List 接口(集合)extends Collection 接口

  List接口的特点:

    允许存储重复元素

    是一个有序集合(存储元素的顺序和取出元素的顺序一致)存123 取出123

    有索引,包含一些带索引的特有方法(有三种遍历方式:迭代器,增强for,普通 for)

  带索引的特有方法:

  1. add(int index, E e);在指定索引上添加元素
  2. E  remove(int index); 移除并返回指定索引处的元素
  3. E  set(index int , E e);修改并返回指定索引上的元素
  4. E  get(int index); 返回列表中指定位置的元素;

  注意:

  操作索引方法时,一定要避免索引越界异常

    IndexOutOfBoundException:索引越界异常,集合会报

      StringIndexOutOfBoundException:字符串索引越界异常

      ArrayIndexOutOfBoundException:数组索引越界异常

三.ArrayList<E>集合

  特点:

  底层是一个数组结构,查询快,增删慢;

  有序集合

  允许存储重复数据

四.Vector集合

  Jdk1.0出现,单线程,线程安全集合

五.LinkedList<E> 集合

  Java.util.LinkedList<E> 集合implements List<E>

  特点:

    底层是一个双向链表结构,查询慢,增删快;

    存取是有序的

    允许重复元素

  LinkedList特有的方法:

    增加的方法:

    1.   void addFirst(E e)  将指定元素插入到此列表的开头
    2.   void push(E e)  将元素插入此列表的开头。此方法等效于addFirst(E e)
    1.   void addList(E e) 将指定元素添加到列表的结尾,相当于add(E e);

    删除的方法:

    1.   E removeFirst();移除并返回此列表的第一个元素
    2.   E removeLast();移除返回列表的最后一个元素;
    3.   E pop()移除并返回此列表的第一个元素,此方法等效于removeFrist()

    获取的方法:

    1.   E getLast(); 获取最后一个元素
    2.   E getFrist(); 获取第一个元素
    3.   Boolean isEmpty();判断列表是否为空

六.Set集合

  Java.util.Set接口(集合) extends Collection 接口

  Set接口的特点:

    1.   不允许有重复的元素
    2.   没有索引,不能用普通for遍历

七.HashSet<E>

  Java.util.HashSet<E> 集合implements Set接口

    HashSet<E> 接口的特点

    1.   底层原理是一个哈希表(数组+单向列表),查询快,增删快
    2.   无序集合,存储的顺序有可能跟取出的顺序不一致

  使用HashSet<E> 存储元素唯一的原理:重写hashCode()方法和equals()方法;

    使用HashSet  add方法存储元素的时候,会自动调用hashCode();方法,然后对集合中的元素的哈希值进行比较,如果没有相同的哈希值,则会存入。如果哈希值有相同的,则会调用equals()方法,判断相等,如果相等不存入, 不相等存入

八.LinkedHashSet<E>

  Java.util.LinkedHashSet 集合 extends HashSet集合

  LinkedHashSet<E>特点:

    1.   底层原理:哈希表(数组+单向链表)+双向链表。
    2.   双向链表可以保证元素存取有序。但元素要求不能重复

九.哈希值

  就是一个十进制的整数,有操作系统随机给出

  可以使用Object类中的方法hashCode获取哈希值

  int hashCode()返回该对象的哈希码值;

  源码:

    Public native int hashCode();

    native:指调用了本地操作系统的方法实现

十.ArrayList<E> 集合储存不重复元素的的方法:

  1. boolean contains(Object  o); 方法判断是否包含指定元素
  2. 将ArrayList的元素遍历添加到Set 集合中
  3. 使用HashSet集合的构造方法;HashSet(Collection <? extends E> c)

java学习笔记之集合家族2的更多相关文章

  1. java学习笔记之集合家族1

    集合 集合介绍: 由于数组中存放对象,对对象操作起来不方便.java中有一类容器,专门用来存储对象. 集合与数组的区别: 1.数组的长度固定的,而集合长度时可变的 2.数组只能储存同一类型的元素,而且 ...

  2. Java学习笔记之---集合

    Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...

  3. Java学习笔记之集合

    集合(Collection)(掌握) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组而数组的长度固定 ...

  4. 【原】Java学习笔记026 - 集合

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:从三国演义中 ...

  5. 【Java学习笔记】集合转数组---toArray()

    package p2; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class ...

  6. 【Java学习笔记】<集合框架>定义功能去除ArrayList中的重复元素

    import java.util.ArrayList; import java.util.Iterator; import cn.itcast.p1.bean.Person; public class ...

  7. 【原】Java学习笔记028 - 集合

    package cn.temptation; import java.util.HashSet; import java.util.Set; public class Sample01 { publi ...

  8. 5.3类集(java学习笔记)集合的输出

    一.集合的输出 迭代输出:Iteratror接口 在输出集合时,最标准的方法是使用迭代器迭代输出. 1,List中的迭代器. Iterator中包含三个方法: hasNex()t判断集合内是否有元素存 ...

  9. java学习笔记——Collection集合接口

    NO 方法名称 描述 1 public boolean add(E e) 向集合中保存数据 2 public void clear() 清空集合 3 public boolean contains(O ...

随机推荐

  1. Brave Game(裸的巴什博弈)

    Brave Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  2. Linux必知必会的目录与启动过程

    第1章 /etc/目录 1.1 /etc/sysconfig/network-scripts/ifcfg-eth0 linux第一块网卡的配置文件 [root@znix ~]# cat /etc/sy ...

  3. 桌面消息通知:HTML5 Notification

    先上一段完整代码 //注册权限 Notification.requestPermission(function (status) { // 这将使我们能在 Chrome/Safari 中使用 Noti ...

  4. kafka单机模式部署安装,zookeeper启动

    在root的用户下 1):前提 安装JDK环境,设置JAVA环境变量 2):下载kafka,命令:wget  http://mirrors.shuosc.org/apache/kafka/0.10.2 ...

  5. 逆向知识第八讲,if语句在汇编中表达的方式

    逆向知识第八讲,if语句在汇编中表达的方式 一丶if else的最简单情况还原(无分支情况) 高级代码: #include "stdafx.h" int main(int argc ...

  6. padding-使用必记

    前言 说起了padding可谓是盒子模型中最常用的一个属性,你真的了解padding吗?那我请问您设置padding会影响盒子的宽度与高度吗?也许好多人会回答padding会影响到盒子的宽度与高度.在 ...

  7. R语言高性能编程(二)

    接着上一篇 一.减少内存使用的简单方法1.重用对象而不多占用内存 y <- x 是指新变量y指向包含X的那个内存块,只有当y被修改时才会复制到新的内存块,一般来说只要向量没有被其他对象引用,就可 ...

  8. [转载] 基于zookeeper、连接池、Failover/LoadBalance等改造Thrift 服务化

    转载自http://blog.csdn.net/zhu_tianwei/article/details/44115667 http://blog.csdn.net/column/details/sli ...

  9. Python之mysql数据库更新表数据接口实现

    昨天,因为项目需求要添加表的更新接口,来存储预测模型训练的数据. 先码为敬~~~~~~~ # -*- coding: utf-8 -*- import pymysql import settings ...

  10. python基础-------模块与包(四)

    configparser模块与 subprcess 利用configparser模块配置一个类似于 windows.ini格式的文件可以包含一个或多个节(section),每个节可以有多个参数(键=值 ...