collection 订阅
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。 展开全文
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
信息
释义 
Collection 表示一组对象
相    关
接口通常用来传递 collection
中文名
COLLECTION
属    性
层次结构 中的根接口
COLLECTION基本信息
JDK不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。包 (bag) 或多集合 (multiset)(可能包含重复元素的无序 collection)应该直接实现此接口。所有通用的 Collection 实现类(通常通过它的一个子接口间接实现 Collection)应该提供两个“标准”构造方法:一个是 void(无参数)构造方法,用于创建空 collection;另一个是带有 Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。实际上,后者允许用户复制任何 collection,以生成所需实现类型的一个等效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的 Collection 实现都遵从它。此接口中包含的“破坏性”方法,是指可修改其所操作的 collection 的那些方法,如果此 collection 不支持该操作,则指定这些方法抛出 UnsupportedOperationException。如果是这样,那么在调用对该 collection 无效时,这些方法可能,但并不一定抛出 UnsupportedOperationException。例如,如果要添加的 collection 为空且不可修改,则对该 collection 调用 addAll(Collection) 方法时,可能但并不一定抛出异常。一些 collection 实现对它们可能包含的元素有所限制。例如,某些实现禁止 null 元素,而某些实现则对元素的类型有限制。试图添加不合格的元素将抛出一个未经检查的异常,通常是 NullPointerException 或 ClassCastException。试图查询是否存在不合格的元素可能抛出一个异常,或者只是简单地返回 false;某些实现将表现出前一种行为,而某些实现则表现后一种。较为常见的是,试图对某个不合格的元素执行操作且该操作的完成不会导致将不合格的元素插入 collection 中,将可能抛出一个异常,也可能操作成功,这取决于实现本身。这样的异常在此接口的规范中标记为“可选”。由每个 collection 来确定其自身的同步策略。在没有实现的强烈保证的情况下,调用由另一进程正在更改的 collection 的方法可能会出现不确定行为;这包括直接调用,将 collection 传递给可能执行调用的方法,以及使用现有迭代器检查 collection。Collections Framework 接口中的很多方法是根据 equals 方法定义的。例如,contains(Object o) 方法的规范声明:“当且仅当此 collection 包含至少一个满足 (o==null e==null :o.equals(e)) 的元素 e 时,返回 true。”不 应将此规范理解为它暗指调用具有非空参数 o 的 Collection.contains 方法会导致为任意的 e 元素调用 o.equals(e) 方法。可随意对各种实现执行优化,只要避免调用 equals 即可,例如,通过首先比较两个元素的哈希码。(Object.hashCode() 规范保证哈希码不相等的两个对象不会相等)。较为常见的是,各种 Collections Framework 接口的实现可随意利用底层 Object 方法的指定行为,而不管实现程序认为它是否合适。
收起全文
精华内容
下载资源
问答
  • JVM:Garbage Collection GC

    万次阅读 2020-03-02 20:46:13
    Garbage Collection GC

    Garbage Collection GC

    不管去哪里,都要记得这个图咯。今天重点看看GC垃圾回收是怎么搞的😄😄😄
    由于回收的主要区域是堆内存,我们需要重新看看堆内存到底是怎么样子的

    堆内存🌲


    在这里插入图片描述

    • Young Generation Survivor Space:新生代,包括了Eden Space ,S0,S1区域
      💰Eden Space:最开始的对象都分配在这里,静静等待着垃圾回收
      💰S0:即Survivor0 space,当Eden Space垃圾回收后存活的对象放到这里来
      💰S1:当S0区域的对象逃过了GC的魔掌就会移到S1区域
    • Old Generation tenured:老年代,或者旧生代,主要是Young Generation的对象还没有被回收就会移到这个老年代来了。
    • Permanent Generation:俗称永久代,JDK1.8里面已经把它从堆区域移除了,成为了方法区,用来存储常量,类信息等等

    垃圾回收流程📖


    在这里插入图片描述

    这个就和上面介绍的差不多,总之就是Eden->S0->S1->Tenured
    说的那么多,好像说的那么爽,结果没有一个点能够卡得上,到底什么是垃圾啊

    什么是垃圾👀


    主要有两种方式来判别是不是垃圾:引用计数法和可达性分析。java采用了可达性分析法
    引用计数法

    引用计数法:引用计数算法是垃圾回收器中的早起策略,在这种方法中,堆中的每个对象实例都有一个引用计数器,点一个对象被创建时,且该对象实例分配给一个变量,该变量计数设置为1 ,当任何其他变量赋值为这个对象的引用时,计数加1 ,(a=b ,则b引用的对象实例计数器+1)但当一个对象实例的某个引用超过了生命周期或者被设置为一个新值时,对象实例的引用计数器减1,任何引用计数器为0 的对象实例可以当做垃圾收集。 当一个对象的实例被垃圾收集是,它引用的任何对象实例的引用计数器减1.
    但是呢,引用计数有个致命的问题,就是不能解决循环引用的实例,比如A引用了B,B引用了A,连个计数永远不为0,那么两个对象永远不会回收

    可达性分析

    可达性分析:这是java里面采用的方法。该方法的基本思想是通过一系列的“GC Roots”对象作为起点进行搜索,如果在“GC Roots”和一个对象之间没有可达路径,则称该对象是不可达的,不过要注意的是被判定为不可达的对象不一定就会成为可回收对象。被判定为不可达的对象要成为可回收对象必须至少经历两次标记过程,如果在这两次标记过程中仍然没有逃脱成为可回收对象的可能性,则基本上就真的成为可回收对象了。
    在这里插入图片描述
    呐,就从这个图的GC Root开始找,根据离散数学里面的图一样,有很多的GC Root
    GC Root:
    1.虚拟机栈中引用的对象(本地变量表)
    2.方法区中静态属性引用的对象
    3. 方法区中常量引用的对象
    4.本地方法栈中引用的对象(Native对象)

    关于这种引用有四种,强引用,软引用,弱引用,虚引用

    强引用: 是java中最强的引用,可以直接访问指向的对象,有点儿像C里面的指针,但是它宁愿抛出OOM,也不愿意去回收,所以可能会导致内存泄露。
    软引用: 仅次于强引用,当内存资源使用紧张时才会去回收
    弱引用: 弱引用是一种比软引用较弱的引用类型。在系统GC时,只要发现弱引用,不管系统堆空间是否足够,都会将对象进行回收。在java中,可以用java.lang.ref.WeakReference实例来保存对一个Java对象的弱引用。
    虚引用: 当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在垃圾回收后,销毁这个对象,将这个虚引用加入引用队列。程序可以通过判断引用队列中是否已经加入了虚引用,来了解被引用的对象是否将要被垃圾回收。如果程序发现某个虚引用已经被加入到引用队列,那么就可以在所引用的对象的内存被回收之前采取必要的行动。

    finalize方法


    在这里插入图片描述
    在这里插入图片描述
    引用了别人的图片:看看

    在这里插入图片描述

    垃圾回收算法🦢


    1⃣️.Mark-Sweep(标记-清除)算法

    在这里插入图片描述

    分为了两个阶段:第一个阶段就是将要回收的对象标记。第二个阶段就是将标记的对象回收。看似很简单,但是很大的问题,就是内存碎片了。

    在这里插入图片描述

    2⃣️.Copying(复制)算法

    可以说,是为了解决上面的内存碎片的问题把。把堆内存分成了两部分,一部分是分配对象,另一部分留着复制。当要回收的时候,先将还存活的对象复制到另一半,然后一次性清除原来的一半。但是呢,这样我们能够使用的内存就只有一半了,另一半根本使用不了,只能留着复制,而且每次复制都移动那么多对象,效率明显会下降。

    在这里插入图片描述

    3⃣️.Mark-Compact(标记-整理)算法

    这个方法是为了解决Copy算法内存使用问题,它是进行垃圾回收后,再把存活的对象往一边移动,这样子就可以使用整个内存了

    在这里插入图片描述

    4⃣️.Generational Collection(分代收集)算法

    这是大部分JVM常用的一种垃圾回收算法。首先要看到上面那个堆Heap区域的图,所以需要先明白Heap区域分成了Young Generation(Eden,S0,S1),Old Generation。
    可以看到在Young Generation,将内存区域分成了几块,很明显就可以使用Copy算法,也就是说Generational Collection采用了上面三种的某几种算法,结合而成的。在Young Generation,这样子在Eden区域的存活的对象复制到S0,然后将Eden区域给清除掉。同理S0存活的对象复制到S1,然后将S0清除。S1存活的复制到老年代Old Generation ,然后清除S1.

    在这里插入图片描述

    Young Generation触发的GC叫做Minor GC,发生频率比较高,而Old Generation叫做Major GC即Full GC,一般发生频率比较低,因为都是存活率很久的对象

    在这里插入图片描述

    垃圾收集器🆚


    主要的垃圾收集器有四种:

    • Serial Garbage Collection:串行垃圾回收器
    • Parallel Garbage Collection:并行垃圾回收器
    • CMS Garbage Collection:CMS垃圾回收其
    • G1 Garbage Collection:G1垃圾回收器
      在这里插入图片描述

    Serial Garbage Collection:一次只开一个线程回收,在垃圾回收时会停止所有的应用程序线程,不然怎么会叫串行呢,对吧,看上图最左边,应用程序线程停止了,只有垃圾回收线程在执行。-XX:+UseSerialGCJVM参数以使用串行垃圾收集器。
    Parallel Garbage Collection:上图中间的那个,多个线程执行垃圾回收,是JVM默认的方式,但是也会暂停其他应用程序线程
    CMS:并发标记清除(CMS)垃圾收集器使用多个线程扫描堆内存,以标记要逐出的实例,然后清除标记的实例。CMS垃圾收集器只保存以下两种情况下的所有应用程序线程:

    • 在Old Generaton空间中标记引用对象时。
    • 2:如果在执行垃圾收集时堆内存发生并行更改。
      与并行垃圾收集器相比,CMS收集器使用更多的CPU来确保更好的应用程序吞吐量。如果我们可以分配更多的CPU以获得更好的性能,那么CMS垃圾收集器是优于并行收集器的首选。打开XX:+USeParNewGC JVM参数以使用CMS垃圾收集器
      G1 Garbage Collection:G1垃圾收集器用于大型堆内存区域。它将堆内存分成多个区域,并在这些区域内并行进行收集。G1也会在回收内存后压缩空闲堆空间。但是CMS垃圾收集器压缩了stop-the-world(STW)情况下的内存。G1收集器首先根据大多数垃圾对区域进行优先级排序。打开–XX:+UseG1GC JVM参数以使用G1垃圾收集器。
    虽然说分成了上面几种,但是呢,根据老年代,新生代又会有不同的使用方式。下图中,Young Generation和Tunured Generation的连线代表可以搭配使用的

    在这里插入图片描述

    1:Serial收集器(复制Copy算法)

    单线程串行运行,会暂停应用程序。算是历史很悠久的一种收集器了。

    在这里插入图片描述

    2:ParNew收集器(复制Copy算法)

    其实就是上面Serial的多线程版本,除了GC线程在多个CPU上同时执行外,其他和Serial没啥区别,也会要暂停其他应用程序

    在这里插入图片描述

    3:Parallel Scavenge(复制Copy算法)

    与吞吐量关系密切,故也称为吞吐量优先收集器。特点:属于新生代收集器也是采用复制算法的收集器,又是并行的多线程收集器(与ParNew收集器类似)。
    该收集器的目标是达到一个可控制的吞吐量。还有一个值得关注的点是:GC自适应调节策略(与ParNew收集器最重要的一个区别)

    GC自适应调节策略:Parallel Scavenge收集器可设置-XX:+UseAdptiveSizePolicy参数。当开关打开时不需要手动指定新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRation)、晋升老年代的对象年龄(-XX:PretenureSizeThreshold)等,虚拟机会根据系统的运行状况收集性能监控信息,动态设置这些参数以提供最优的停顿时间和最高的吞吐量,这种调节方式称为GC的自适应调节策略。

    Parallel Scavenge收集器使用两个参数控制吞吐量:

    • XX:MaxGCPauseMillis 控制最大的垃圾收集停顿时间
    • XX:GCRatio 直接设置吞吐量的大小。

    4:Serial Old收集器(标记整理算法)

    在老年代使用的,也是单线程的。使用场景:
    • 在JDK1.5以及以前的版本中与Parallel Scavenge收集器搭配使用。
    • 作为CMS收集器的后备方案,在并发收集Concurent Mode Failure时使用。
      在这里插入图片描述

    5:Parallel Old 收集器(标记-整理算法)

    是Parallel Scavenge收集器的老年代版本。
    特点:多线程,采用标记-整理算法。
    应用场景:注重高吞吐量以及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge+Parallel Old 收集器。

    Parallel Scavenge/Parallel Old收集器工作过程图:
    在这里插入图片描述

    6:CMS收集器(标记清除算法)

    一种以获取最短回收停顿时间为目标的收集器。
    特点:基于标记-清除算法实现。并发收集、低停顿。
    应用场景:适用于注重服务的响应速度,希望系统停顿时间最短,给用户带来更好的体验等场景下。如web程序、b/s服务。
    CMS收集器的运行过程分为下列4步:

    • 初始标记:标记GC Roots能直接到的对象。速度很快但是仍存在Stop The World问题。
    • 并发标记:进行GC Roots Tracing 的过程,找出存活对象且用户线程可并发执行。
    • 重新标记:为了修正并发标记期间因用户程序继续运行而导致标记产生变动的那一部分对象的标记记录。仍然存在Stop The World问题。
    • 并发清除:对标记的对象进行清除回收。

    CMS收集器的内存回收过程是与用户线程一起并发执行的。
    在这里插入图片描述

    CMS收集器的缺点:

    • 对CPU资源非常敏感。
    • 无法处理浮动垃圾,可能出现Concurrent Model Failure失败而导致另一次Full GC的产生。
    • 因为采用标记-清除算法所以会存在空间碎片的问题,导致大对象无法分配空间,不得不提前触发一次Full GC。

    7:G1收集器

    特点如下:

    • 并行与并发:G1能充分利用多CPU、多核环境下的硬件优势,使用多个CPU来缩短Stop-The-World停顿时间。部分收集器原本需要停顿Java线程来执行GC动作,G1收集器仍然可以通过并发的方式让Java程序继续运行。
    • 分代收集:G1能够独自管理整个Java堆,并且采用不同的方式去处理新创建的对象和已经存活了一段时间、熬过多次GC的旧对象以获取更好的收集效果。
    • 空间整合:G1运作期间不会产生空间碎片,收集后能提供规整的可用内存。
    • 可预测的停顿:G1除了追求低停顿外,还能建立可预测的停顿时间模型。能让使用者明确指定在一个长度为M毫秒的时间段内,消耗在垃圾收集上的时间不得超过N毫秒。
      在这里插入图片描述
    上面简单介绍了一些垃圾回收的基础,后面会详细的分析垃圾收集器并配置实操
    展开全文
  • COllection介绍和Collection排序

    千次阅读 2017-07-30 23:22:35
    一、集合:集合主要分为Collection,Map 二、Collection接口 1、List接口:大量连续有序的元素。 ArrayList:基于动态数组的实现。是线程不同步的,如果需要让其线程同步操作,可以使用Collection....
    一、集合:集合主要分为Collection,Map

    二、Collection接口
    1、List接口:大量连续有序的元素
    ArrayList:基于动态数组的实现。是线程不同步的,如果需要让其线程同步操作,可以使用Collection.synchronized(list)对列表实现同步。容量不足时,自动增长容量一半。
    Vector:基于动态数组的实现。是线程同步的。容量不足时,容量自动翻倍。
    LinkedList:基于链表的实现,元素存储不连续。通过元素的指针进行连接。是线程不安全的。
    2、Set接口:存储大量无序的元素。Set集合不允许出现重复元素。相当于数学的集合概念
    HashSet:基于Hash表的顺序进行排序。若两个元素的Hash值一样,会产生覆盖。
    TreeSet:基于元素的自然顺序进行排序(元素实现Comparable接口)实现排序。或者通过Comparator接口完成元素的存储。

    三、Map接口:以键值对结构存储元素,一般一个键对应一个值,键不允许重复,但是值可以
    HashMap:允许放入一个空的键或值,基于Hash表的顺序对于映射关系中的键排序。在存储元素是不允许键的重复,但允许值的重复。
    TreeMap:不允许放入空键,基于红黑树的一种映射实现,元素的排序按照键的自然顺序排序(元素必须实现Comparable接口)实现。或者通过Comparator接口完成元素的存储。
     Hashtable:不允许放入空键或值,从老式的Dictionary类继承,新增对Map接口的实现。Hashtable是线程同步的。

    四、Iterator:集合元素迭代器,在进行迭代时候。不要使用集合自带add和remove方法。需要使用Iterator的remove方法。
    ListIterator:动态数组的迭代器。可以反向迭代,但是反向迭代时候需要指针不在最前面。可以在迭代时候set,add,remove。
    List list = new ArrayList<String>();
    Iterator it = list.iterator();
    while(it.hasNext){
        String s= it.next();
    }



    五、关于Collection排序
    1、匿名内部类方式
    public static void main(String[] args) {
               ArrayList<String> a = new ArrayList<>();
               a.add("阿玲");
               a.add("刘德华");
               a.add("劉德華");
               a.add("吳為");
               a.add("吴为");
               a.add("喵喵");
               Collections.sort(a, new Comparator<String>() {//Collections是一个在Collection上操作的工具类。可以实现对集合元素的排序
                    @Override
                    public int compare(String o1, String o2) {
                         return Collator.getInstance(Locale.CHINA).compare(o1, o2);//Collator是一个支持简体汉语的比较的抽象类。简单字符串比较可以调用String自带比较方法
                    }
               });
               for (String string : a) {
                    System.out.println(string);
               }
         }
    2、实现Comparator接口方式。然后再调用Collections.sort(List list,new SortMethod( )  )方法
    public class SortMethod implements Comparator<Student> {
         private String type;
         private boolean type1;
         public SortMethod(String type, boolean type1) {
               super();
               this.type = type;
               this.type1 = type1;
         }
         @Override
         public int compare(Student o1, Student o2) {
               int i = 0;
               if (type.equals("id")) {
                    i = o1.getId() - o2.getId();
               } else if (type.equals("name")) {
                    i = o1.getName().compareTo(o2.getName());
               } else if (type.equals("birthday")) {
                    i = o1.getBirthday().compareTo(o2.getBirthday());
               }
               if (type1)
                    return i;
               else {
                    return -i;
               }
         }
    }
    3、需要比较对象继承Compartable接口,并重写CompareTo方法。然后调用Collections.sort(List list)方法
    public class Student implements Comparable<Student>{
         private String name;
         private int id;
         private Date birthday;
         public Student(String name, int id,Date birthday) {
               super();
               this.name = name;
               this.birthday = birthday;
               this.id = id;
         }
         @Override
         public int compareTo(Student o) {          
               return this.birthday.compareTo(o.birthday);
         }    
    }

    展开全文
  • collection接口

    千次阅读 2016-12-21 16:23:11
    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,...

    Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。

    Collection
    ├List
    │├LinkedList
    │├ArrayList
    │└Vector
    │ └Stack
    └Set
    Map
    └WeakHashMap

    首先,我们先看一下Collection集合的基本结构:

           

     

    1、Collection接口

           Collection是最基本集合接口,它定义了一组允许重复的对象。Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,如下:

     

    2、 Set接口

           Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复。

           特征:无序且不可重复。

     

    3、  List接口

            List接口同样也继承于Collection接口,但是与Set接口恰恰相反,List接口的集合类中的元素是对象有序且可重复。

           特征:有序且可重复

           两个重要的实现类:ArrayList和LinkedList

           1.ArrayList特点是有序可重复

           2.LinkedList是一个双向链表结构的。

     

    4、Map接口

           Map也是接口,但没有继承Collection接口。该接口描述了从不重复的键到值的映射。Map接口用于维护键/值对(key/value pairs)。

           特征:它描述了从不重复的键到值的映射。

           两个重要的实现类:HashMap和TreeMap

           1.HashMap,中文叫散列表,基于哈希表实现,特点就是键值对的映射关系。一个key对应一个Value。HashMap中元素的排列顺序是不固定的。更加适合于对元素进行插入、删除和定位。

           2.TreeMap,基于红黑书实现。TreeMap中的元素保持着某种固定的顺序。更加适合于对元素的顺序遍历。


    5、Iterator接口

           Iterator接口,在C#里有例外一种说法IEnumerator,他们都是集合访问器,用于循环访问集合中的对象。
          所有实现了Collection接口的容器类都有iterator方法,用于返回一个实现了Iterator接口的对象。Iterator对象称作迭代器,
    Iterator接口方法能以迭代方式逐个访问集合中各个元素,并可以从Collection中除去适当的元素。

          

    [csharp] view plain copy
     print?在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:10px;">Iterator it = collection.iterator(); // 获得一个迭代子    
    2. while(it.hasNext())     
    3. {    
    4. Object obj = it.next(); // 得到下一个元素    
    5. } </span>  

     

    6、Comparable接口

          Comparable可以用于比较的实现,实现了Comparable接口的类可以通过实现comparaTo方法从而确定该类对象的排序方式。


    总结

     

           Collection集合分别派生自Collection和Map接口,Collection有两个常用子接口List和Set,分别表示有序可重复,无序不可重复的集合。而Map存储的是key-value的映射。


            上面的总结看上去很多,很繁琐,其实你只要记得一点:collection是用于处理各种数据结构的,根据各种数据结构的特点理解,一切都会变简单。


          虽然此博客有点糙,也希望能帮助你对集合的理解有一点点作用(尤其是对组织中人)。下面的博文,我会更新一些有关线程的基础知识,请继续关注。

    展开全文
  • Collection接口

    2020-11-24 11:49:46
    1、Collection接口: (1)List 有序集合,允许相同元素和null,有下标 LinkedList 非同步,允许相同元素和null,遍历效率低插入和删除效率高 ArrayList 非同步,允许相同元素和null,实现了动态大小的数组,遍历...

    集合:对象的容器,定义了多个对象操作的常用方法,实现数组的功能;长度不固定;位于java.uitl.*包;
    一:
    1、Collection接口:

    (1)List 有序集合,允许相同元素和null,有下标
    LinkedList 非同步,允许相同元素和null,遍历效率低插入和删除效率高
    ArrayList 非同步,允许相同元素和null,实现了动态大小的数组,遍历效率高,用的多
    Vector 同步,允许相同元素和null,效率低
    Stack 继承自Vetor,实现一个后进先出的堆栈
    (2)Set 无序集合,不允许相同元素,最多有一个null元素,无下标
    HashSet 无序集合,不允许相同元素,最多有一个null元素
    TreeSet 有序集合,不允许相同元素,最多有一个null元素
    在这里插入图片描述

    2、Collection接口的功能:
    (1)单个元素的的添加和删除

    public boolean add(Object obj)//向collection中添加指定元素
    public boolean remove(Object obj) //删除collection中的指定元素
    

    (2)组元素的添加、删除

    public boolean addAll(Collection col) //向collection中添加指定的一组对象
    public boolean removeAll(Collection col)//删除collection中指定的一组对象//删除两个集合的交集
    public boolean retainAll(Collection col)//删除仅在collection中而不在col中的对象//保留两个集合的交集,其他删除
    public boolean clear()//清空collection中对象的个数
    

    (3)查询

    public boolean contains(Object obj) //查询collection中是否含指定的对象obj
    public boolean isEmpty() //查询collection中是否存在对象
    public int size()  //获取collection中对象的个数
    

    Collection接口的代码:

    package Fanxing;
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    
    /***
     * Collection接口
     * (1)添加元素
     * (2)删除元素
     * (3)遍历元素
     * (4)清空
     * @author AiY
     */
    public class Demo1 {
        public static void main(String[] args) {
            //创建集合
            Collection collection=new ArrayList();
            //添加元素
            collection.add("苹果");
            collection.add("香蕉");
            collection.add("橘子");
            System.out.println("元素个数:"+collection.size());
            System.out.println(collection);
            //删除对象
            System.out.println("------删除元素后遍历--------");
            collection.remove("香蕉");
            System.out.println("删除之后元素为:"+collection);
            //遍历元素
            collection.add("西瓜");
            System.out.println("-----增强for遍历-----------");
                //增强for遍历,不显示下标
            for(Object object : collection){
                System.out.println(object);
            }
            System.out.println("-----迭代器遍历-------------");
                //使用迭代器遍历(主要遍历集合的一种方式)//hasNext()-有没有下一个元素;
                //next()-获取下一个元素//remove()-删除当前元素
            Iterator it =collection.iterator();
            while(it.hasNext()){
                String element=(String)it.next();//强制转换//element元素的意思
                System.out.println(element);
            }
            //清空
            System.out.println("-----清空后遍历-------");
            collection.clear();
            System.out.println("清空之后元素:"+collection);
        }
    }
    
    

    运行结果:

    元素个数:3
    [苹果, 香蕉, 橘子]
    ------删除元素后遍历--------
    删除之后元素为:[苹果, 橘子]
    -----增强for遍历-----------
    苹果
    橘子
    西瓜
    -----迭代器遍历-------------
    苹果
    橘子
    西瓜
    -----清空后遍历-------
    清空之后元素:[]
    
    展开全文
  • 【Mybatis】collection解决一对多关联查询

    万次阅读 热门讨论 2018-03-06 21:39:53
    接下来小编将介绍collection标签的相关知识,包括嵌套查询和分段查询两种方式。现在有员工和部门两张表,前两篇文章介绍的都是根据员工查部门,本篇文章介绍由部门查所有员工首先请参照上上篇中步骤1,2,3 , 4,...
  • Java中的Collection集合以及Collection集合实现类实例

    万次阅读 多人点赞 2018-10-28 17:40:48
    文章目录集合Collection:List集合Collection集合和List集合迭代实例 集合 1、 面向对象语言对事物的描述是通过对象体现,如果想要存储多个对象就需要集合。 2、 数组和集合的区别  a) 长度不同   i. 集合长度可...
  • Collection接口详解

    万次阅读 2018-05-29 17:00:41
    Collection接口 Collection接口Api一览 为什么重写Iterable接口的iterator方法 Collection Api 详解 Collection接口在Java8中的函数扩展 Iterator 接口 Iterator Api详解 ArrayList的自定义迭代器 List 接口 ...
  • Collection集合框架

    千次阅读 2020-11-12 13:16:06
    Collection是所有集合的顶级接口,里面规定了集合操作元素的相关功能方法集合与数组一样,用于存储一组元素,但是集合又多个不同的实现类来实现不同的数据结构 Collection下面有两个常见的值接口 java.util.List:...
  • Java Collection Framework : Collection 接口

    千次阅读 2016-10-27 18:58:48
    Java 容器类根接口Collection 的详细描述。
  • Collection和Collections区别

    万次阅读 2019-08-28 14:18:09
    1.Collection: 是集合类的上层接口。本身是一个Interface,里面包含了一些集合的基本操作。 Collection接口时Set接口和List接口的父接口 2.Collections Collections是一个集合框架的帮助类,里面包含一些对...
  • Collection转List

    万次阅读 2017-10-19 09:07:55
    Collection对象转换为List对象
  • collection详解

    千次阅读 2016-08-20 00:32:09
    两个月之前准备软考时,简单的从理论上总结了最常用...本文主要是通过简单的介绍Collection集合,向读者简单阐述各个类的基本定义以及其作用,为后面的学习做一下铺垫。 首先,我们先看一下Collection集合的基
  • Mybatis出现Mapped Statements collection already contains value for 错误原因: 1.mapper中存在id重复的值 2.mapper中的parameterType或resultType为空。 例如:<update id="deleteSchool" parameterType=...
  • Collection集合总结

    千次阅读 2018-08-09 22:20:41
    Collection接口继承体系图  Collection接口常用方法 返回值类型 方法  解释 boolean add(E e) 向列表的尾部添加指定的元素(可选操作) boolean addAll(Collection&lt;? extends E&...
  • 说一说collection

    千次阅读 2021-02-07 16:50:50
    Collection 单列集合的顶层接口 List 有序 有索引 可重复 ArrayList 底层数据是数组 查询快 增删慢 线程不安全 效率高 LinkedList 底层数据是链表 查询慢 增删快 线程不安全 效率高 Vector 底层...
  • Java Collection接口

    千次阅读 2016-08-13 10:03:12
    在java.util包中提供了一些集合类,常用的有List、Set和Map类,其中List类和Set类继承了Collection接口。这些集合类又称为容器,长度是可变的,数组用来存放基本数据类型的数据,集合用来存放类对象的引用。 List...
  • Collection集合

    万次阅读 2013-07-17 21:02:42
    Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不...
  • Collection框架

    千次阅读 2016-12-08 12:36:11
    Collection,List,ArrayList,LinkedList,Vector(自动增长数组),HashSet,HashMap等. 集合框架中的类主要封装的是典型的数据结构,如动态数组,链表,堆栈,集合,哈希表等. 集合框架类似编程中经常用到的工具类,使得...
  • Collection的概念

    2018-02-14 18:41:55
    ·Collection表示一组对象,它是集中,收束的意思,就是把一些数据收集起来。·Collection的函数库是在java.util包下的一些接口和分类,类是用来产生对象存放数据用的,接口是访问数据的方式。·Collection函数与...
  • 初次一看四个有点相似...Collections是一个集合工具类,本身没有实现Collection接口,而是内部类实现了Collection接口,它的作用就是封装常用的集合操作。 public static void main(String[] args) { ArrayList<In
  • Error:scalac: Error: scala.collection.mutable.Set.apply(Lscala/collection/Seq;)Lscala/collection/GenTraversable;java.lang.NoSuchMethodError:scala.collection.mutable.Set.apply(Lscala/collection/Seq;)...
  • 了解Collection 和 Collections

    千次阅读 2020-05-03 21:47:36
    Collection 和 Collections区别 java.util.Collection 是一个集合接口(集合类的一个顶级接口)。 它提供了对集合对象进行基本操作的通用接口方法。 Collection接口在Java 类库中有很多具体的实现。 Collection...
  • Collection框架介绍

    千次阅读 2018-05-23 21:17:52
    Collection:List列表,Set集, Map:Hashtable,HashMap,TreeMap Collection 是单列集合List 元素是有序的、可重复有序的 collection,可以对列表中每个元素的插入位置进行精确地控制。可以根据元素的整数...
  • Collection 和 Collections 有什么区别?

    千次阅读 2019-04-30 23:30:39
    Collection 和 Collections 有什么区别? Collection是JDK中集合层次结构中的最根本的接口。定义了集合类的基本方法。源码中的解释: * The root interface in the <i>collection hierarchy</i>. A...
  • Collection和Collections的区别

    万次阅读 多人点赞 2018-11-14 09:22:50
    Collection和Collections的区别
  • Android Java Collection认识

    千次阅读 2020-02-12 16:34:58
    无意间发现xmpp代码中Collection addresses,本着好奇的❤️,查阅发现 List是Collection接口的子接口。 的List接口的实现类 :ArrayList、LinkedList、Stack、CopyOnWriteArrayList List、Set、Queue、Map都指向...
  • mongodb collection相关

    千次阅读 2015-12-25 11:53:35
    mongodb collection相关

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 166,157
精华内容 66,462
关键字:

collection