AbstractCollection

此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作。 还有两个抽象方法,具体的迭代器,具体的Collection 的大小

    public abstract Iterator<E> iterator();

    public abstract int size();
   //这里add 是实现方法,而不是已抽象方法的方式呢
/*
     To implement an unmodifiable collection, the programmer needs only to*
     extend this class and provide implementations
    for the iterator and size methods
  To implement a modifiable collection, the programmer must additionally override this class's add method
   
 为了实现一个不可修改的集合,程序员只需要扩展这个类并提供iteratorsize方法的实现。 ( iterator方法返回的迭代器必须实现hasNextnext )

  要实现可修改的集合,程序员必须另外覆盖此类的add方法(否则将抛出UnsupportedOperationException ),并且由iterator方法返回的迭代器必须另外实现其remove方法。

    */
  public boolean add(E e) {
    throw new UnsupportedOperationException();
} 

List

有序的 collection(也称为序列)。定义了一些针对List的方法

    boolean addAll(int var1, Collection<? extends E> var2);

    E get(int var1);

    E set(int var1, E var2);

    void add(int var1, E var2);

    E remove(int var1);

    int indexOf(Object var1);

    int lastIndexOf(Object var1);

    ListIterator<E> listIterator();

    ListIterator<E> listIterator(int var1);

    List<E> subList(int var1, int var2)
AbstractList
此类提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数据存储(如数组)支持的该接口所需的工作。和AbstractCollection实现了Collection的骨干实现一样
 //list结构被修改的次数
protected transient int modCount = 0;
AbstractSequentialList 是 LinkedList的父接口
此类提供的骨干实现List界面最小化以实现此接口由“连续访问”数据存储备份所需的工作(如链接列表)。对于随机访问数据(如数组), AbstractList应优先于此类。
实现的add 方法
public void add(int index, E element) {
try {
      //  使用 ListIterator 的 add方法
      listIterator(index).add(element); 
    } catch (NoSuchElementException exc)
  {   throw new IndexOutOfBoundsException("Index: "+index);
}
}
												

java 集合框架 List相关接口的更多相关文章

  1. java集合框架部分相关接口与类的介绍

    集合基础 接口 Iterable //Implementing this interface allows an object to be the target of the "for-ea ...

  2. Java集合框架之List接口浅析

    Java集合框架之List接口浅析 一.List综述: 毫无疑问List接口位于java.util包下,继承自 Collection接口 存储元素的特点: 有序可重复(有序:即存进去是什么顺序,取出来 ...

  3. Java集合框架之Collection接口

    Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架.Java集合工具包位于Java.util包下 ...

  4. java 集合框架(二)Iterable接口

    Iterable接口是java 集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素,我们可以看下它的成员方法 修饰符和返回值 方法名 描述 Iterator<T> iter ...

  5. Java集合框架之四大接口、常用实现类

    Java集合框架 <Java集合框架的四大接口> Collection:存储无序的.不唯一的数据:其下有List和Set两大接口. List:存储有序的.不唯一的数据: Set:存储无序的 ...

  6. Java集合框架之Map接口浅析

    Java集合框架之Map接口浅析 一.Map接口综述: 1.1java.util.Map<k, v>简介 位于java.util包下的Map接口,是Java集合框架的重要成员,它是和Col ...

  7. Java集合框架之Set接口浅析

    Java集合框架之Set接口浅析 一.java.util.Set接口综述: 这里只对Set接口做一简单综述,其具体实现类的分析,朋友们可关注我后续的博文 1.1Set接口简介 java.util.se ...

  8. Java集合框架中Map接口的使用

    在我们常用的Java集合框架接口中,除了前面说过的Collection接口以及他的根接口List接口和Set接口的使用,Map接口也是一个经常使用的接口,和Collection接口不同,Map接口并不 ...

  9. Java集合框架中List接口的简单使用

    Java集合框架可以简单的理解为一种放置对象的容器,和数学中的集合概念类似,Java中的集合可以存放一系列对象的引用,也可以看做是数组的提升,Java集合类是一种工具类,只有相同类型的对象引用才可以放 ...

随机推荐

  1. 数据映射-LSM Tree和SSTable

    Coming from http://blog.sina.com.cn/s/blog_693f08470101njc7.html 今天来聊聊lsm tree,它的全称是log structured m ...

  2. (一:NIO系列)JAVA NIO 简介

    出处:JAVA NIO 简介 Java 中 New I/O类库 是由 Java 1.4 引进的异步 IO.由于之前老的I/O类库是阻塞I/O,New I/O类库的目标就是要让Java支持非阻塞I/O, ...

  3. Centos7-firewall-cmd

    firewall-cmd CentOS 7 默认使用的防火墙是firewalld,不是CentOS 6的iptables 查看防火墙状态 systemctl status firewalld 也可以 ...

  4. asp.net 获取表单中控件的值

    原文:https://blog.csdn.net/happymagic/article/details/8480235   C# 后台获取前台 input 文本框值.(都是以控件的Name来获取) s ...

  5. 线程池-连接池-JDBC实例-JDBC连接池技术

    线程池和连接池   线程池的原理:     来看一下线程池究竟是怎么一回事?其实线程池的原理很简单,类似于操作系统中的缓冲区的概念,它的流程如下:先启动若干数量的线程,并让这些线程都处于睡眠状态,当客 ...

  6. Java 逻辑运算符相关解析

    问:定简单说说 Java 中 & 与 && 有什么区别?| 与 || 呢? 答:& 是位运算符,&& 是布尔逻辑运算符,| 与 || 类似同理.在进行逻 ...

  7. Spring---MongoDB

    1.MongoDB概述 1.1.NoSQL数据库 1.1.1.NoSQL的主要特点: 不使用SQL语言   作为查询条件: 数据存储  也不是固定的表.字段: 1.1.2.NoSQL数据库  主要有  ...

  8. Python PEP8代码书写规范

    摘自: 规范 https://blog.csdn.net/ratsniper/article/details/78954852

  9. poj 3468 : A Simple Problem with Integers 【线段树 区间修改】

    题目链接 题目是对一个数组,支持两种操作 操作C:对下标从a到b的每个元素,值增加c: 操作Q:对求下标从a到b的元素值之和. #include<cstdio> #include<c ...

  10. c++11 指针空值

    1. 引入nullptr的必要性: 典型的指针初始化是将其指向一个空的位置.比如: int* my_ptr = 0; int* my_ptr = NULL; 一般情况下,NULL是一个宏定义. #un ...