集合类-Collecion

Collection接口

常用方法

    //添加新元素
    boolean add (E element);
    //返回迭代器
    Iterator<E> iterator();

Iterator接口

    public interface Iterator<E>{
        E next();
        boolean hasNext();
        //移除Iterator最近的一个获取的元素 所以要调用next获取过元素才能调用remove删除
        void remove();
    }

集合的添加迭代

    Collection c = ......;//随便一种Collection实现
    Iterator it = c.iterator();
    while(it.hasNext()){
        //do something with it.next();
    }

    //java 5.0+ 可以使用for each
    for(Element e: c){
        //do something with e;
    }

AbstractCollecion-实现了iterator,size等方法

Collection实现集合

实现类 解析
ArrayList 可以动态增长和缩减的索引序列
LinkedList 可以在任何位置进行高效插入删除操作的序列
ArrayDeque 循环数组实现的双端队列
HashSet 没有重复元素的无序集合
TreeSet 有序集合
EnumSet 包含枚举类型的集合
LinkedHashSet 可以记住元素插入次序的集合
PriorityQueue 允许高效删除最小元素的集合
HashMap 存储键值关联的数据结构
TreeMap 键值有序排列的映射表
EnumMap 键值属于枚举类型的映射表
LinkedHashMap 可以记住键值添加次序的映射表
WeakHashMap 其值没用的之后,可以自动被垃圾回收期回收的映射表
IdentityHashMap 一种使用==(不使用equals)来比较键值的映射表

队列-queue

先进先出

队列尾添加元素,队列头删除元素,队列个数查询

实现方式

  • 循环数组实现(容量有限)
  • 链表实现

链表

链表是一个有序集合

实现ListIterator接口

    public interface ListIterator<E> extends Iterator<E>{
        E next();
        boolean hasNext();
        //移除Iterator最近的一个获取的元素 所以要调用next获取过元素才能调用remove删除
        void remove();

        //新添加的接口
        //插入到下一个元素之前
        void add();
        //移到上一个元素
        E previous();
        boolean hasPrevious();

        E getFirst();
        E getLast();
        E removeFirst();
        E removeLast();
    }

demo

    /**
     * 链表是一个有序集合
     */
     LinkedList<String> llist = new LinkedList<String>();
     llist.add("s1");
     llist.add("s2");
     llist.add("s3");
     System.out.println(llist);//=>[s1, s2, s3]
     /**
      * Iterator的使用
      */
     Iterator<String> it = llist.iterator();
     System.out.println(it.next());//=>s1
     it.remove();//=>移除s1
     System.out.println(llist);//=>[s2, s3]
     /**
      * ListIterator的使用
      */
     ListIterator<String> lit =llist.listIterator();
     System.out.println(lit.next());//=>返回了Ss2
     lit.add("1");//插入到下一个元素(s3)之前
     System.out.println(llist);//=>[s2, 1, s3]

数组列表-ArrayList

有序集合,可以使用get,set方法设定指定位置元素

散列集-HashSet

为每个对象计算一个散列码(整数)

树集-TreeSet

有序的散列集

要实现Comparable接口来实现排序

双端队列-ArrayDeque,LinkedList

可以同时操作头尾的元素

优先级队列-PriorityQueue

元素任意顺序插入,都会按照排序顺序排列,remove方法总会获得优先级最低的元素

映射表-HashMap,TreeMap

若散列映射表-WeakHashMap

自动回收没用的key值

链接散列集和链接映射表-LinkedHashList LinkedHashMap

可以记住插入的顺序

枚举集和映射集-EnumSet

标识散列映射表-IdentityHashMap

java基础(8) -集合类-Collecion的更多相关文章

  1. 面试【JAVA基础】集合类

    1.ArrayList的扩容机制 每次扩容是原来容量的1.5倍,通过移位的方法实现. 使用copyOf的方式进行扩容. 扩容算法是首先获取到扩容前容器的大小.然后通过oldCapacity (oldC ...

  2. 【java基础之jdk源码】集合类

    最近在整理JAVA 基础知识,从jdk源码入手,今天就jdk中 java.util包下集合类进行理解 先看图 从类图结构可以了解 java.util包下的2个大类: 1.Collecton:可以理解为 ...

  3. Java基础__Java中自定义集合类

    Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...

  4. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  5. 【JAVA面试题系列一】面试题总汇--JAVA基础部分

    JAVA基础 基础部分的顺序: 基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法 线程的语法,集合的语法,io 的语法,虚拟机方面的语法 每天几道,持续更新!! 1.一个". ...

  6. Java基础知识【下】( 转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608360 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  7. Java基础应用

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

  8. Java基础知识学习(一)

    部门接了新项目,后台使用Java框架play framework,前端是html,前后台通过rest交互,能够支持多端的互联网架构. 因为之前没有Java基础,前端使用的也很少,决定深入学习一下Jav ...

  9. java基础要点

    Java语言是现在比较常用的编程语言,因为Java语言可以编写桌用程序,也可以编写web程序,还能编写嵌入式程序.这是由于相比脚本语言,Java 的运行速度要快.而对于底层语言,Java与平台无关,可 ...

随机推荐

  1. UICollection无法下拉刷新的问题

    当UICollectonView加载的内容不够多的时候会出现无法上下拉刷新的问题,折腾了半天,原来是有一个属性没有打开 设置 : self.collectionView.alwaysBounceVer ...

  2. (HTTPS)-https原理及tomcat配置https方法

    一. 什么是HTTPS 在说HTTPS之前先说说什么是HTTP,HTTP就是我们平时浏览网页时候使用的一种协议.HTTP协议传 输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常 ...

  3. java集合(1)- 类底层数据结构分析

    Java 集合类图 参考:http://www.cnblogs.com/xwdreamer/archive/2012/05/30/2526822.html

  4. MyBatis双数据源配置

    配置相关 jdbc 配置 #============================================================================ # MySQL # ...

  5. EM算法原理总结

    EM算法也称期望最大化(Expectation-Maximum,简称EM)算法,它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA主题模型的变分推断等等.本文就对 ...

  6. 从LINQ开始之LINQ to Objects(下)

    前言 上一篇<从LINQ开始之LINQ to Objects(上)>主要介绍了LINQ的体系结构.基本语法以及LINQ to Objects中标准查询操作符的使用方法. 本篇则主要讨论LI ...

  7. Javascript创建类和对象

    现总结一下Javascript创建类和对象的几种方法: 1.原始的创建方法: <script type="text/javascript"> var person = ...

  8. 【Spark2.0源码学习】-9.Job提交与Task的拆分

          在前面的章节Client的加载中,Spark的DriverRunner已开始执行用户任务类(比如:org.apache.spark.examples.SparkPi),下面我们开始针对于用 ...

  9. angular实现的文字上下无缝滚动

    最近在学习angularJs,业余时间随便写了一个文字上下无缝滚动的例子,主要写了一个小小的指令. css代码:主要控制样式 <style type="text/css"&g ...

  10. 搭建eureka服务

    1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...