天道酬勤,学无止境

Java——集合、List接口、ArrayList、LinkedList、Iterator接口:迭代器

文章目录

    • 集合
    • Collection
      • List
        • ArrayList
        • LinkedList
        • Iterator

集合

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类。

集合和数组的区别有:

  1. 长度区别:
    数组的长度是固定的而集合的长度是可变的
  2. 数据类型的区别:
    数组可以存储基本数据类型 , 也可以存储引用数据类型; 而集合只能存储引用数据类型
  3. 内容区别:
    数组只能存储同种数据类型的元素 ,集合可以存储不同类型的元素

在集合框架中,Collection是顶层父接口,List和Set为子接口,List的实现类又有ArrayList、LinkedList、Vector,而Set的实现类有HashSet、LinkedHashSet、TreeSet,集合框架图如下所示

在这里插入图片描述
在这里插入图片描述
首先,讲解Collection顶层父接口下的方法

Collection

常用的成员方法

  • 添加功能

    • boolean add(Object obj):添加一个元素
    • boolean addAll(Collection c):添加一个集合的元素 (给一个集合添加进另一个集合中的所有元素)
  • 删除功能

    • void clear():移除所有元素
    • boolean remove(Object o):移除一个元素
    • boolean removeAll(Collection c):移除一个集合的元素(移除一个以上返回的就是true) 删除的元素是两个集合的交集元素,如果没有交集元素 则删除失败 返回false
  • 判断功能

    • boolean contains(Object o):判断集合中是否包含指定的元素
    • boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(这个集合 包含 另一个集合中所有的元素才算包含才返回true)
    • boolean isEmpty():判断集合是否为空
  • 获取功能

    • Iterator iterator():获取一个迭代器(主要用于遍历集合)
    • iterator().next():让迭代器的指针下移
    • iterator().hasNext():判断迭代器的指针下面是否为空
  • 长度功能

    • int size():元素的个数
  • 交集功能

    • boolean retainAll(Collection c):获取两个集合的交集元素(交集:两个集合都有的元素)
  • 转换功能

    • Object[] toArray():将集合转换为数组(依次获取集合中的每一个元素)

List


List接口的特点:

  • 有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出123)
  • 有索引,包含了一些带索引的方法
  • 允许存储重复的元素

List接口中带索引的方法(特有)

  • public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
  • public E get(int index):返回集合中指定位置的元素。
  • public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
  • public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。

注意:

操作索引的时候,一定要防止索引越界异常
IndexOutOfBoundsException:索引越界异常,集合会报
ArrayIndexOutOfBoundsException:数组索引越界异常
StringIndexOutOfBoundsException:字符串索引越界异常

 //List集合遍历有3种方式
        //使用普通的for循环
        for(int i=0; i<list.size(); i++){
            //public E get(int index):返回集合中指定位置的元素。
            String s = list.get(i);
            System.out.println(s);
        }
        System.out.println("-----------------");
        //使用迭代器
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String s = it.next();
            System.out.println(s);
        }
        System.out.println("-----------------");
        //使用增强for
        for (String s : list) {
            System.out.println(s);
        }

ArrayList

底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
在这里插入图片描述

LinkedList

底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
注意:使用LinkedList集合特有的方法,不能使用多态
在这里插入图片描述

Iterator

有两个常用的方法:
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
判断集合中还有没有下一个元素,有就返回true,没有就返回false
E next() 返回迭代的下一个元素。
取出集合中的下一个元素

Iterator迭代器,是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取实现类的方式比较特殊

Collection接口中有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象
Iterator iterator() 返回在此 collection 的元素上进行迭代的迭代器。

迭代器的使用步骤(重点):

  1. 使用集合中的方法iterator()获取迭代器的实现类对象,使用Iterator接口接收(多态)
  2. 使用Iterator接口中的方法hasNext判断还有没有下一个元素
  3. 使用Iterator接口中的方法next取出集合中的下一个元素

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Java集合框架List,Map,Set等全面介绍
    Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构。 Java集合框架的基本接口/类层次结构: java.util.Collection [I] +--java.util.List [I] +--java.util.ArrayList [C] +--java.util.LinkedList [C] +--java.util.Vector [C] +--java.util.Stack [C] +--java.util.Set [I] +--java.util.HashSet [C] +--java.util.SortedSet [I] +--java.util.TreeSet [C] java.util.Map [I] +--java.util.SortedMap [I] +--java.util.TreeMap [C] +--java.util.Hashtable [C] +--java.util.HashMap [C] +--java.util.LinkedHashMap [C] +--java.util.WeakHashMap [C] [I]:接口 [C]:类 Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object的集合
  • 精选 Java面试题附答案 ---- 字符串&集合面试题篇
    1. Java 中操作字符串都有哪些类?它们之间有什么区别? 操作字符串的类有:String、StringBuffer、StringBuilder。 String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象。 而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。 24万字Java面试手册PDF下载链接:https://shimo.im/docs/Wyj8QRpq39jkC3jD24万字Java面试手册PDF下载链接:https://shimo.im/docs/Wyj8QRpq39jkC3jD24万字Java面试手册PDF下载链接:https://shimo.im/docs/Wyj8QRpq39jkC3jD StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer, 所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。 2
  • Java 中Iterator 、Vector、ArrayList、List 使用深入剖析
    线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap Collection接口   Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类, Java SDK提供的类都是继承自Collection的“子接口”如List和Set。   所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的 Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。   如何遍历Collection中的每一个元素
  • 刷leetCode需要掌握的一些数据结构---JAVA篇
    基本数据结构一览 1.Collection接口 Collection是最基本的集合接口,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。这个接口有两个基本方法: public interface Collection<E>{ boolean add(E element); Iterator<E> iterator(); ... } 如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用迭代子即可逐一访问Collection中每一个元素,典型的用法如下: Iterator id=collection.iterator(); while(it.hasNext()){ Object obj=it.next();//得到下一个元素 } 由Collection接口派生的两个接口是List和Set。 2.List接口 List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java数组。和下面要提到的Set不同,List允许有相同的元素。 实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。 2
  • java集合(二)
    这一章补充上一章的内容、 一、迭代器与增强for循环 List strList = new ArrayList<>(); //使用增强for循环 for(String obj : strList){ System.out.println(obj); } //使用iterator Iterator it = strList.iterator(); while(it.hasNext()){ String obj = it.next(); System.out.println(obj); } Iterator(迭代器): 在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口java.util.Iterator。Iterator接口也是Java集合中的一员,但它与Collection、Map接口有所不同,Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象也被称为迭代器 。 想要遍历Collection集合,那么就要获取该集合迭代器完成迭代操作。获取迭代器的方法: public Iterator iterator(): 获取集合对应的迭代器,用来遍历集合中的元素的 Iterator接口的常用方法如下: boolean hasNext()
  • java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)
    Hello,EveryBody.欢迎来到MySpace: 真心感谢一直以来有大家的帮助和陪伴,让我对java预言的学习愈加产生了浓厚的兴趣,相信我们的小团队会在陈老师的带领下逐渐壮大。 好了,赶快进入今天的正题吧,一个java中很重要的部分——集合。 说起集合,我们会潜意识里想到另外一个与之相近的名词——数组,OK!两者确实有相似之处,但也正是这点才是我们应该注意的地方,下面简单列出了两者的区别(具体功能的不同学习这篇文章后就会明白了):数组长度固定既可以存储基本数据类型,也能存储引用数据类型一个数组中的元素类型必一致集合长度可变只能存储引用数据类型一个集合中的元素类型可以是任意的引用类型一.集合概述Collection<E>父接口List<E>子接口ArrayList<E>类Vector<E>类LinkedList<E>类Set<E>子接口HashSet<E>类TreeSet<E>类 (List特点:存入顺序和取出顺序一致,存储的元素可以重复) (Set特点:元素的顺序无序且唯一,即无序性和唯一性)二.ArrayList类:(底层是Object数组) 1.一些基本的方法 (1)增:add及其重载; (2)删:remove(index)移除指定下标的元素,remove(Object)移除指定对象的元素,clear()移除所有; (3)改:set(index,Object); (4
  • 面试汇总——JavaSE——集合(一)
    文章目录 集合(一)List请说明List、Map、Set三个接口存取元素时,各有什么特点? ArrayList阐述ArrayList、Vector、LinkedList的存储性能和特性请说明ArrayList和LinkedList的区别? collection接口请判断List、Set、Map是否继承自Collection接口? 集合请讲讲你所知道的常用集合类以及主要方法?请说明Collection 和 Collections的区别。请你说明HashMap和Hashtable的区别?请说说快速失败(fail-fast)和安全失败(fail-safe)的区别?请你说说Iterator和ListIterator的区别?请简单说明一下什么是迭代器? 集合(一) List 请说明List、Map、Set三个接口存取元素时,各有什么特点? List public interface List<E> extends Collection<E> 是一个有序的容器 可以有重复的值,也可以存在null 添加的顺序就是输出的顺序 List<Integer> list = new ArrayList<Integer>(); list.add(3); list.add(1); list.add(8); list.add(0); Iterator<Integer> iterator = list
  • Java重点部分之集合
    集合+泛型 前言Collection接口Arraylist集合操作集合实例--斗地主数组的特点数组和集合的区别 List集合LinkedList集合 Set集合比较器 MapHashSet和TreeSet比较Map接口中的常用方法斗地主综合案例升级版(添加看牌时排序功能) 彩蛋 前言 近来在学习算法,刚入门算法,属实是有点吃力,一个力扣的简单题目做一个多小时,悔当初没有好好学算法,当初以为只要学好一门语言和框架就可以了,但是后来发现算法是灵魂,算法不精通那不管学什么也都是捉襟见肘啊。但java这方面的知识也不能落下呀,最近打算开发一个汇总Java SE的项目,于是先来博客把那些重点的知识再串一下吧,今天先从集合+泛型开始,集合那可是相当重要啊!话不多说,整起~ Collection接口 Java集合框架的根是两个接口:Collection和Map,根据Collection和Map的架构,Java中的集合可以分为3类:List是有序集合,他会记录每次添加元素的顺序,元素可以重复;Set是无序集合,不记录元素添加的顺序,元素不可以重复;Map是键值对的集合,每个元素都有键Key和值value对应组成,键值和取值分别存储,键值是无序集合Set,取值是有序集合List。 collenction是单列集合最顶级的接口 注:新建对象的时候可以用new 对象名().var,回车,即可。
  • JAVA面试题集(二)
    ● 请说明List、Map、Set三个接口存取元素时,各有什么特点? 考察点:List 参考回答: List以特定索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象的equals()方法来区分元素是否重复)。Map保存键值对(key-value pair)映射,映射关系可以是一对一或多对一。Set和Map容器都有基于哈希存储和排序树的两种实现版本,基于哈希存储的版本理论存取时间复杂度为O(1),而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键(key)构成排序树从而达到排序和去重的效果。 ● 阐述ArrayList、Vector、LinkedList的存储性能和特性 考察点:ArrayList 参考回答: ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较ArrayList差,因此已经是Java中的遗留容器。 LinkedList使用双向链表实现存储(将内存中零散的内存单元通过附加的引用关联起来,形成一个可以按序号索引的线性结构,这种链式存储方式与数组的连续存储方式相比,内存的利用率更高)
  • java核心类库(五) 集合类库(一)
    注:本内容为个人拉勾教育大数据训练营学习课程笔记 五、集合类库(一) 5.1 集合的概述 集合由来 当需要在Java程序中记录单个数据内容时,则声明一个变量当需要在Java程序中记录多个类型相同的数据内容时,声明一个一维数组当需要在Java程序中记录多个类型不同的数据内容时,则创建一个对象当需要在Java程序中记录多个类型相同的对象数据时,创建一个对象数组当需要在Java程序中记录多个类型不同 的对象数据时,则准备一个集合 集合的框架架构 Java中集合框架顶层框架是:java.util.Collection 集合 和 java.util.Map 集合其中 Collection 集合中存取元素的基本单位是:单个元素(相当于Python中的列表)其中 Map 集合中存取元素的基本单位是:单对元素(相当于Python中的字典) 注:集合中不支持基本数据类型,要用引用数据类型(基本数据类型的包装类) 5.2 Collection集合(重点) 基本概念 java.util.Collection接口是 List 接口、Queue 接口以及 Set 接口的父接口,因此该接口里定义的方法既可用于操作List集合,也可用于操作Queue集合和Set集合功能上是集合,类型上是接口java.util.Collection接口无法实例化对象,可以使用ArrayList等实现类,以多态方式来创建对象,如:
  • Set和List有什么区别?(What is the difference between Set and List?)
    问题 Set<E>和List<E>接口之间的根本区别是什么? 回答1 List是元素的有序序列,而Set是元素的无序列表(谢谢,Quinn Taylor)。 列表<E>: 有序集合(也称为序列)。 该界面的用户可以精确控制列表中每个元素的插入位置。 用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。 设置<E>: 不包含重复元素的集合。 更正式地讲,集合不包含元素对e1和e2,使得e1.equals(e2)最多包含一个空元素。 顾名思义,此接口对数学集合抽象进行建模。 回答2 ╔═══════════════════╦══════════════════════╦═════════════════════════════╗ ║ ║ List ║ Set ║ ╠═══════════════════╬══════════════════════╬═════════════════════════════╣ ║ Duplicates ║ YES ║ NO ║ ╠═══════════════════╬══════════════════════╬═════════════════════════════╣ ║ Order ║ ORDERED ║ DEPENDS ON IMPLEMENTATION ║ ╠═══════════════════╬═════════════
  • Java集合中List,Set以及Map等集合
    目录 1.概述 2.List集合 3.Map接口 3.1.Map遍历的四种方式 3.2.Map集合实现斗地主发牌洗牌的动作 4.Set 4.1.HashSet 4.2.hashtable 4.3.TreeSet 4.4.红-黑树 4.5.TreeSet集合排序的两种方式 4.6.LinkedHashSet 1.概述 List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,TreeMapCollection接口下还有个Queue接口,有PriorityQueue类 Queue接口与List、Set同一级别,都是继承了Collection接口。看图你会发现,LinkedList既可以实现Queue接口,也可以实现List接口.只不过呢, LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。SortedSet是个接口
  • Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug
    欢迎访问我的个人网站:https://bengtian.club 集合:集合是java中提供的一种容器,可以用来存储多个数据。 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的。集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。 集合按照其存储结构可以分为两大类,分别是 单列集合java.util.Collection和双列集合java.util.Map, 综述: 根接 口CollectionMap子接口List、Set未学实现类Vector、LinkedList、ArrayList,HashSet、TreeSetHashMap再子类LinkedHashSetLinkedHashMap 一、Collection接口 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有java.util.ArrayList和java.util.LinkedList,Set接口的主要实现类有java.util.HashSet和java.util.TreeSet
  • 集合-list
    Collection集合的概述 Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。 一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。 JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。 此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。 Collection集合的基本功能测试 Collection的功能概述: 1:添加功能 boolean add(Object obj):添加一个元素 boolean addAll(Collection c):添加一个集合的元素 2:删除功能 void clear():移除所有元素 boolean remove(Object o):移除一个元素 boolean removeAll(Collection c):移除一个集合的元素(是一个还是所有) 3:判断功能 boolean contains(Object o):判断集合中是否包含指定的元素 boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(是一个还是所有) boolean isEmpty():判断集合是否为空 4
  • 集合1
    Collection 集合 1. 数组和集合的区别 相同点 都是容器,可以存储多个数据 不同点 数组的长度是不可变的,集合的长度是可变的 数组可以存基本数据类型和引用类型 集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类 2. 集合类体系结构 详细的体系结构可查看API文档 3. Collection 集合概述和使用 概述 是单列接口的顶层接口JDK 不提供此接口的任何直接实现,他提供更具体的子接口实现 用多态的方式出那个键Collection集合的对象 常用方法 方法名说明boolean add(E e)添加元素boolean remove(Object o)从集合中移除指定的元素boolean removeIf(Object o)根据条件进行移除void clear()清空集合中的元素boolean contains(Object o)判断集合中是否存在指定的元素boolean isEmpty()判断集合是否为空int size()集合的大小,也就是集合中元素的个数 4. Collection 集合的遍历 迭代器 Iterator iterator() :返回此集合中元素的迭代器,通过集合对象的iterator() 方法得到 Iterator 中的常用方法 方法名说明boolean hasNext()判断当前位置是否有元素可以被取出E next(
  • ArrayList底层
    一、ArrayList集合底层数据结构 1.ArrayList集合介绍 List集合的可调整大小数组实现。 2.数组结构介绍 增删快:每次增加删除元素,都需要更改数组长度、拷贝以及移除元素位置。 查询快:由于数组在内存中是一块连续空间,因此可以根据地址+索引的方式快速获取对应位置上的元素。 二、ArrayList继承关系 首先我们来看一下ArrayList的继承关系图,如下: 由上图可知,ArrayList分别实现了RandomAccess、List、Cloneable、Serializable四个接口,那么我们分别来看一下他们分别的作用吧 2.1 Serializable标记性接口 介绍: 类的序列化由实现java.io.Serializable接口的类启动。不实现此接口的类将不会使任何状态序列化或反序列化。可序列化类的所有子类都是可序列化的。序列化接口没有方法和字段,仅用于标识可串行化的语义。 序列化:将对象的数据写入到文件(写对象) 反序列化:将文件中对象的数据读取出来(读对象) 2.2Cloneable标记性接口 介绍:一个类实现Cloneable接口来指示Object.clone()方法,该方法对于该类的实列进行字段的复制是合法的。在不实现Cloneable接口的实例上调用对象的克隆方法会导致异常CloneNotSupportedException被抛出。简言之
  • 单值集合Collection和键值对集合Map(一)
    目录 一、集合概念 1、类集的出现 2、集合结构图 二、Collection接口 1、List接口 2、ArrayList实现类 3、Vector实现类 4、ArrayList类和Vector类的区别 5、LinkedList实现类 6、Set接口 7、HashSet实现类 8、TreeSet实现类 (1)特点 (2)定义 (3)排序的说明 其他扩展: 9、关于重复元素的说明 三、集合输出Iterator接口 1、Iterator 2、双向输出ListIterator接口 3、介绍废弃的接口Enumeration 4、foreach输出集合(增强for) 四、Map集合 1、Map接口 2、Map接口与Set接口关系 3、HashMap实现类 4、哈希算法的存储实现原理 (1)存储方式:对象数组+链表 (2)哈希表扩容 (3)哈希表的重新散列 5、Hashtable类和HashMap类的区别 6、TreeMap类 7、Map集合的输出讲解 五、常见集合工具类Collections 1、分析hashCode、equals和内存泄漏 (1)equals(): (2)hashCode(): (3)java.lang.Object中对hashCode的约定: (4)在java集合中,判断两个对象是否相等: (5)内存溢出: 六、总结 一、集合概念 1、类集的出现 (1
  • Java中传统for循环与Iterator / foreach的性能(Performance of traditional for loop vs Iterator/foreach in Java)
    问题 在遍历ArrayList,HashMap和其他集合时比较传统的for循环与Iterator是否有任何性能测试结果? 或者只是为什么我应该在循环中使用Iterator,反之亦然? 回答1 假设这是您的意思: // traditional for loop for (int i = 0; i < collection.size(); i++) { T obj = collection.get(i); // snip } // using iterator Iterator<T> iter = collection.iterator(); while (iter.hasNext()) { T obj = iter.next(); // snip } // using iterator internally (confirm it yourself using javap -c) for (T obj : collection) { // snip } 对于没有随机访问权限的集合(例如TreeSet,HashMap,LinkedList),Iterator的速度更快。 对于数组和ArrayList,性能差异应该可以忽略不计。 编辑:我相信微基准测试是邪恶的根源,就像早期的优化一样。 但是话又说回来,我觉得对这样琐碎的事情的含义有感觉是一件好事。 因此,我进行了一个小测试:
  • Java集合框架
    为了方便对多个对象的操作,java提供了集合类。 1.Collection Collection层次结构的***根接口***。collection对象表示一组对象,这些对象也成为collection的元素。有两个子接口,Set和List,其本身不提供任何具体实现,所有的方法仅由其子接口的实现类实现。 功能: 功能方法添加boolean add(E e)、boolean addAll(Collection c)删除void clear() 、boolean remove(Object o)、removeAll(Collection c)判断boolean contains(Object o):判断集合中是否包含指定元素 ,containsAll(Collection c)获取Interator<E> iterator():迭代器,用于遍历长度int size()转化成数组Object[] toArray() import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class myCollection { public static void main(String[] args) { //创建Collection集合的对象 /
  • Java编程 Javase10
    一、List集合 (一)List接口介绍 java.util.list接口继承自collection接口,时单列集合中的一个重要分支,习惯性的会将实现了List接口的对象称为List集合。特点: 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33.那么集合中,元素的存储就是按照11、22、33的顺序完成的。它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。 (二)List接口中带索引的方法(特有) public void add(int index,E element):将指定元素添加到集合中的指定位置。 public E get(int index):返回集合中指定位置的元素。 public E remove(int index):移除列表中指定位置的元素,返回的是被移除的元素。 public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。 注意:操作索引时一定要防止索引越界异常。 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class list1 { public