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)
时间: 2024-07-28 15:21:50

java学习之集合家族2的相关文章

java学习笔记—集合之Map集合

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: center; font: 12.0px Times } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Songti SC" } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Times } p.p4 { margin: 0.0px 0.0px 0.0px 0.0

Java学习:集合双列Map

数据结构 数据结构: 数据结构_栈:先进后出 入口和出口在同一侧 数据结构_队列:先进先出 入口和出口在集合的两侧 数据结构_数组: 查询快:数组的地址是连续的,我们通过数组的首地址可以找到数组,通过数组的索引可以快速的查找某一个元素. 增删慢:数组的长度是固定的,我们想要增加/删除一个元素,必须创建一个新数组,把原数组的数据复制过来 例: int[] arr = new int[]{1,2,3,4}; 要把数组索引是3的元素删除 必须创建一个新的数组,长度是原数组的长度-1 把原数组的其它元素

java学习总结-集合(collection)

本人正在学习java基础知识,非常感恩能够看到毕向东老师的java视频,他引领了我去思考问题,而不是生硬的去记一些知识点,下面是我对集合学习的总结和思考. 01-常用对象API(集合框架-概述).avi 问题1:什么是集合框架? 首先要理解集合这个词,它有另一个更加形象的名词:容器,所谓容器就是装载事物的器皿,而在java中最大的特征就是面向对象,所以可以推断出其实它就是用来装载对象的,便于我们去遍历和处理这些对象,关于框架的含义,其实就是它不是一个单独对象,而是有很多对象,并且相互存在区别和关

Java学习笔记----------集合Set

Java集合-----Set集合:就像一种容器,可以把多个对象放进该容器中.Java集合分为:Set.List.Map三种体系. Set:无序的,不可重复的: List:有序的,可重复的: Map:代表有映射关系的集合,Map保存的每一项数据都是key-value对.注意:Java 5后添加了Queue体系,代表一种队列集合实现. 集合和数组对比:1.数组一旦初始化,长度不可变:2.数组无法保存具有映射关系的数据,例如成绩表:语文---79:3.数组的元素可以是基本类型的值,也可以是对象,而集合

Java学习之集合框架(1) &lt;好程序员特训营&gt;

<A href="http://www.goodprogrammer.org/" target="blank">android培训</a>------我的java笔记,期待与您交流! 集合框架图: 1. Collection Collection定义了集合框架的共性功能. 1)添加  add(e);  addAll(collection); 2)删除  remove(e);  removeAll(collection);  clear();

java学习日记 集合框架

集合框架 有两大接口  一个是 Collection (类集 )与Map (映射): collection 下有两大接口  一个是List (列表) 另一个是Set(集合) List (列表):ArrayList 基于数组实现的动态列表    动态数组 : LinkedList 基于链表实现的列表      双向循环链表 Vector 向量   ------>stack栈           与线程相关: Set (集合) :TreeSet       通过树实现的集合  有序集合 HashSe

Java学习之集合框架(2) &lt;好程序员特训营&gt;

<A href="http://www.goodprogrammer.org/" target="blank">android培训</a>------我的java笔记,期待与您交流! 1.Set接口 Set集合不允许重复元素,是因为Set判断两个对象相同不是使用==运算符,而是根据equals方法.即两个对象用equals方法比较返回true,Set就不能接受两个对象. public class SetDemo { public static

Java学习分享--&gt;集合--&gt;链表

链表是一个有序集合,它将每个对象存放在独立的结点中,每个结点还存放着下一个结点的引用.在Java中由于链表是双向链接的,每个结点还存放着前一个结点的引用. (图片引自Java核心技术 卷1 基础知识) 删除链表中间的一个元素,只需要更新被删除元素附近的结点.假设我们有三个结点,删除第二个结点后,第一个结点将原本存放第二个结点的引用更新为第三个结点的引用(这里对应我们前面提到的"每个结点还存放着下一个结点的引用"),而第三个结点将原本存放第二个结点的引用更新为第一个结点的引用(这里对应我

Java学习日记 集合

一.接口Map<K,V>1.V put(K key, V value)2.int size()3.public class HashMap<K, V> implements Map<K, V>按键的哈希值存储,put时,key相同会发生替换,一个key值只能对应一个value4.Map的遍历Map没有迭代器,通过keyset()和values()遍历Set<K> keySet()Collection<V> values()//5.Set<M