zoukankan      html  css  js  c++  java
  • java学习笔记之集合家族2

     

    集合体系

    一.数据结构

    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)
    不忘初心,方得始终
  • 相关阅读:
    Disruptor-NET和内存栅栏
    SSDB:高性能数据库服务器
    PostgreSQL配置优化
    ADO.NET的弹性连接控制[ADO.NET idle connection resiliency]
    2013年度IT博客大赛跻身10强
    MongoDB 聚合管道(Aggregation Pipeline)
    验证码类库CaptchaMvc
    AngularJS SPA Template For Visual Studio
    .NET 4.0 版本号
    利用SSH Filesystem实现远程文件系统
  • 原文地址:https://www.cnblogs.com/xuzhaocai/p/8051651.html
Copyright © 2011-2022 走看看