集合框架特点:
1.用于存储对象的容器
2.集合的长度是可变的
3.集合类不可以存储基本数据类型值

一 集合类的迭代器

iterator
Iterator<E> iterator()
返回在此 collection 的元素上进行迭代的迭代器。关于元素返回的顺序没有任何保证(除非此 collection 是某个能提供保证顺序的类实例)。
指定者:
接口 Iterable<E> 中的 iterator
返回:
在此 collection 的元素上进行迭代的 Iterator方法:
boolean hasNext() 如果仍有元素可以迭代,则返回 true。E  next() 返回迭代的下一个元素。void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。可以看到由集合类的iterator方法返回一个内部类的实例对象。public Iterator<E> iterator() {return listIterator();}

注意事项:interator由内部类实现,每种集合类型存储的数据结构不同,需要不同的迭代器来取出和放进元素,所以迭代器对象在容器中进行内部实现。
interator接口就是对所有collection容器进行元素取出的公共接口。

遍历的第一种方式for(Iterator in=l.iterator();in.hasNext();){System.out.println(in.next());}
遍历的第二种方式Iterator in=l.iterator();while(in.hasNext()){System.out.println(in.next());}

Enumeraction与interactor接口的功能是重复的,Iteractor接口添加了一个可选的移除方法。

注意Linkediterator与iterator的区别
下面是Linkediterator的方法:

方法摘要void add(E e) 将指定的元素插入列表(可选操作)。boolean hasNext() 以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。boolean hasPrevious() 如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。E next() 返回列表中的下一个元素。int  nextIndex() 返回对 next 的后续调用所返回元素的索引。E    previous() 返回列表中的前一个元素。int  previousIndex() 返回对 previous 的后续调用所返回元素的索引。void remove() 从列表中移除由 next 或 previous 返回的最后一个元素(可选操作)。void set(E e) 用指定元素替换 next 或 previous 返回的最后一个元素(可选操作)。

注意:在迭代过程中,不能同时用集合对元素进行修改。原因:造成并发问题。
而列表迭代器对象具有add方法,在迭代器迭代过程中用自身方法来修改容器中的内容。

二集合类Collection
|–List 有序,存入和取出顺序一致
|–set 元素不能重复,无序
List可以完成对集合的增删改查


方法摘要boolean add(E e) 向列表的尾部添加指定的元素(可选操作)。void add(int index, E element) 在列表的指定位置插入指定元素(可选操作)。boolean    addAll(Collection<? extends E> c) 添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序(可选操作)。boolean addAll(int index, Collection<? extends E> c) 将指定 collection 中的所有元素都插入到列表中的指定位置(可选操作)。void   clear() 从列表中移除所有元素(可选操作)。boolean  contains(Object o) 如果列表包含指定的元素,则返回 true。boolean  containsAll(Collection<?> c) 如果列表包含指定 collection 的所有元素,则返回 true。boolean    equals(Object o) 比较指定的对象与列表是否相等。E   get(int index) 返回列表中指定位置的元素。int hashCode() 返回列表的哈希码值。int    indexOf(Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。boolean  isEmpty() 如果列表不包含元素,则返回 true。Iterator<E>   iterator() 返回按适当顺序在列表的元素上进行迭代的迭代器。int   lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引;如果列表不包含此元素,则返回 -1。ListIterator<E>  listIterator() 返回此列表元素的列表迭代器(按适当顺序)。ListIterator<E> listIterator(int index) 返回列表中元素的列表迭代器(按适当顺序),从列表的指定位置开始。E  remove(int index) 移除列表中指定位置的元素(可选操作)。boolean  remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。boolean  removeAll(Collection<?> c) 从列表中移除指定 collection 中包含的其所有元素(可选操作)。boolean  retainAll(Collection<?> c) 仅在列表中保留指定 collection 中所包含的元素(可选操作)。E set(int index, E element) 用指定元素替换列表中指定位置的元素(可选操作)。int size() 返回列表中的元素数。List<E>  subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。Object[]   toArray() 返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。
<T> T[]   toArray(T[] a) 返回按适当顺序(从第一个元素到最后一个元素)包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。

1.List
|–vector:内部是数组数据结构,是同步的,但增,删,查询都很慢。
|–ArrayList:内部是数组数据结构,是不同步的,代替了Vector,查询的速度快。
|–LinkedList:内部是链表数据结构,是不同步的,增删的速度快。
现在常用的有ArrayList和LinkedList
1.1ArrayList:

方法摘要boolean  add(E e) 将指定的元素添加到此列表的尾部。void   add(int index, E element) 将指定的元素插入此列表中的指定位置。boolean addAll(Collection<? extends E> c) 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。boolean   addAll(int index, Collection<? extends E> c) 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。void    clear() 移除此列表中的所有元素。Object  clone() 返回此 ArrayList 实例的浅表副本。boolean   contains(Object o) 如果此列表中包含指定的元素,则返回 true。void   ensureCapacity(int minCapacity) 如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。E    get(int index) 返回此列表中指定位置上的元素。int   indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。boolean   isEmpty() 如果此列表中没有元素,则返回 trueint lastIndexOf(Object o) 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。E   remove(int index) 移除此列表中指定位置上的元素。boolean    remove(Object o) 移除此列表中首次出现的指定元素(如果存在)。
protected  void removeRange(int fromIndex, int toIndex) 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。E   set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。int  size() 返回此列表中的元素数。Object[]  toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
<T> T[]   toArray(T[] a) 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。void    trimToSize() 将此 ArrayList 实例的容量调整为列表的当前大小。

细节:
在迭代器遍历的语句中,不能有多个next,每个调用语句都会向下遍历。

LinkedList:

 boolean add(E e) 将指定元素添加到此列表的结尾。void    add(int index, E element) 在此列表中指定的位置插入指定的元素。boolean addAll(Collection<? extends E> c) 添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。boolean addAll(int index, Collection<? extends E> c) 将指定 collection 中的所有元素从指定位置开始插入此列表。void   addFirst(E e) 将指定元素插入此列表的开头。void    addLast(E e) 将指定元素添加到此列表的结尾。void    clear() 从此列表中移除所有元素。Object  clone() 返回此 LinkedList 的浅表副本。boolean    contains(Object o) 如果此列表包含指定元素,则返回 true。Iterator<E>    descendingIterator() 返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。E    element() 获取但不移除此列表的头(第一个元素)。E    get(int index) 返回此列表中指定位置处的元素。E getFirst() 返回此列表的第一个元素。E    getLast() 返回此列表的最后一个元素。int  indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。int  lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。ListIterator<E>    listIterator(int index) 返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。boolean  offer(E e) 将指定元素添加到此列表的末尾(最后一个元素)。boolean offerFirst(E e) 在此列表的开头插入指定的元素。boolean  offerLast(E e) 在此列表末尾插入指定的元素。E  peek() 获取但不移除此列表的头(第一个元素)。E   peekFirst() 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。E    peekLast() 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。E    poll() 获取并移除此列表的头(第一个元素)E pollFirst() 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。E pollLast() 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。E pop() 从此列表所表示的堆栈处弹出一个元素。void    push(E e) 将元素推入此列表所表示的堆栈。E  remove() 获取并移除此列表的头(第一个元素)。E  remove(int index) 移除此列表中指定位置处的元素。boolean    remove(Object o) 从此列表中移除首次出现的指定元素(如果存在)。E removeFirst() 移除并返回此列表的第一个元素。boolean    removeFirstOccurrence(Object o) 从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。E  removeLast() 移除并返回此列表的最后一个元素。boolean    removeLastOccurrence(Object o) 从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。E  set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。int  size() 返回此列表的元素数。Object[]   toArray() 返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组。
<T> T[]   toArray(T[] a) 返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组;返回数组的运行时类型为指定数组的类型。

注意:Linkedlist在jdk1.6后多了peekFirst(),peeklast(),pollFirst(),poll last()方法,其中peekFirst(),peeklast()是获取不移除,而pollFirst(),poll last()是获取并移除。用getFirst()如果为空会抛出异常,而peekFirst()如果为空会返回null。

ArrayList Example

class Person
{private String name;private int age;public String getName() {return name;}public int getAge() {return age;}Person(String name ,int age){this.name=name;this.age=age;}public void  show(){System.out.println(this.getName()+this.getAge());}}
public class CollectionDemo {public static void main(String []args){ArrayList 1=new ArrayList();Person p=new Person("zhang",13);Person p2=new Person("wang",18);l1.add(p);l1.add(p2);for(Iterator in=l1.iterator();in.hasNext();){Person p1=(Person)(in.next());System.out.println(p1.getName()+p1.getAge());}}
}

LinkedList Example模拟队列

package Collection;import java.util.LinkedList;class Que
{   LinkedList l=new LinkedList();void Set(Object obj){l.addLast(obj);}public  Object Output(){return l.removeFirst();}public boolean isEmpty(){if(l.isEmpty())return true;else return false;}
}
public class LinkedListDemo {
public static void main(String []args)
{Que queue=new Que();queue.Set("pegzio,9");queue.Set("waning.8");while(!queue.isEmpty()){System.out.println(queue.Output());}
}
}

模拟栈

package Collection;import java.util.LinkedList;class Que
{   LinkedList l=new LinkedList();void Set(Object obj){l.addFirst(obj);}public  Object Output(){return l.removeFirst();}public boolean isEmpty(){if(l.isEmpty())return true;else return false;}
}
public class LinkedListDemo {
public static void main(String []args)
{Que queue=new Que();queue.Set("p,1");queue.Set("w.1");while(!queue.isEmpty()){System.out.println(queue.Output());}
}
}

JAVA从入门到进阶(九)——集合类框架基础一相关推荐

  1. java书籍_2020年java从入门到进阶书籍推荐,基础\自学\编程\数据结构\后端\虚拟机\网络\设计模式书籍...

    前言 1. 基础书籍 2. 并发书籍 3. JVM虚拟机书籍 4. 网络相关 5. 操作系统 6. 数据结构与算法 7. 数据库 8. 设计模式 前言 从1996年到现在,java已经走过了24个年头 ...

  2. SQL Server AlwaysON从入门到进阶(3)——基础架构

    本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本文将更加深入地讲解WSFC所需的核心组件.由于AlwaysOn和FCI都需要基于WSFC之上,因此我们首先要了解在Wind ...

  3. Java 从入门到进阶之路

    之前的文章我们介绍了 Java 的数组,本章我们来看一下 Java 的对象和类. Java 是一种面向对象语言,那什么是对象呢,对象在编程语言中属于一个很宽泛的概念,我们可以认为万事万物都是对象,每个 ...

  4. 穿越 java | 快速入门篇 - 第1节 计算机基础知识

    主题:计算机基础知识 开发环境 更多干货 定义 作用 组成元件 CPU 内存 cpu里的高速缓存 BIOS软件(基础输入输出系统) CMOS芯片 机械硬盘 组成 数据存取过程 文件编码 ASCII G ...

  5. Java编程入门(2.1):基础Java应用程序

    程序是指可以通过计算机执行一系列指令组成的任务.一个简单的想法,但是计算机运行任何指令都必须按照计算机可以使用的方式编写.这意味着,程序必须使用编程语言编写.编程语言区别于普通人类语言的地方在于它完全 ...

  6. python3入门与进阶笔记_【基础】学习笔记6-python3 Turtle库_实操进阶3

    # 樱花:有设置阴影效果 import turtle ast importmath importrandom def SetTurtle(): # t.colormode(255)  # 采用0-25 ...

  7. ijkplayer系列14:从入门到进阶问题树梳理

    ijkplayer系列14:从入门到进阶问题树梳理 基础准备 语法基础: C语言以及JNI开发是必备的能力 C语言语法简单复习 https://anacz.blog.csdn.net/article/ ...

  8. servlet入门与进阶

    servlet入门与进阶 1.servlet基础认知 Servlet(Server Applet):全称Java Servlet,是用Java编写的服务器端程序,其主要功能在于交互式地浏览和修改数据, ...

  9. HTML + CSS3 基础入门与进阶

    HTML + CSS3 基础入门与进阶 简介 1.前端三层 2.IDE简介 3.网页实时热更新 4.项目开发流程 一.HTML 入门与进阶 1.HTML 语法与基础标签 (1)HTML5基础入门 (2 ...

最新文章

  1. 超市购物打印小票的简单程序 记录下来
  2. OpenCV 中的 convertTo 函数
  3. mysql backup_MySQL备份还原——AutoMySQLBackup介绍
  4. STM 32 窗口看门狗
  5. Word 2010 制作文档结构之章节自动编号
  6. SpringCloud Zuul(二)之简单用法
  7. 更新IIS下WCF服务产生的两则问题
  8. 对天气数据进行简单的数据分析
  9. 【 58沈剑 架构师之路】4种事务的隔离级别,InnoDB如何巧妙实现?
  10. 计算机msoffice怎么复习,全国计算机一级MSoffice怎样复习我在 – 手机爱问
  11. 高德地图画带箭头的线_华耀室佳发光顶角线能否代替传统回型顶角线呢?
  12. 正则表达式基础---转自 Python正则表达式指南 前边
  13. 【洛谷3368】树状数组模版题(区间修改,单点查询)
  14. 我的Qt作品(12)使用Qt+OpenCV实现一个带旋转角度的Shape形状匹配演示软件
  15. 『Hammerspoon』Mac 锁屏自动开关蓝牙
  16. 电脑微信语音通话听不到对方声音或无法播放消息语音
  17. 当我说要做大数据工程师时他们都笑我,直到三个月后……
  18. 神盾特工hive_漫威电影宇宙编年史(一):宇宙大爆炸到灭霸家乡的消亡
  19. bat备份MySQL失败_bat备份mysql的方法
  20. 计算机基础及Java语法

热门文章

  1. 利用jquery实现双向数据绑定,网友:哎呦不错哦!
  2. 腾讯员工平均月薪7.5w?我这是又被平均了?
  3. python 爬虫采集 图标
  4. html5做密码形式的游戏,html5仿支付宝密码框的实现代码
  5. 第一条计算机哪一年,世界上第一台计算机叫什么名字?在哪发明的?
  6. [Usaco2008 Open]Crisis on the Farm 牧场危机
  7. 手机百度浏览器怎么设置繁体字_百度浏览器繁体版下载-百度浏览器繁体中文版电脑版 - 极光下载站...
  8. [UnityShader入门精要读书笔记]37.水波效果
  9. 波卡动态 | Moonbeam 上第一个3D NFT项目宣布合作
  10. linux pandas教程_十分钟入门 Pandas