动力节点口口相传的Java黄埔军校
Javase——集合的概述,Collection集合及其功能,集合中迭代器的原理
2019-08-30 来源:动力节点

  

今天动力节点Java培训机构小编为大家介绍“集合的概述,Collection集合及其功能,集合中迭代器的原理”希望能够帮助到java零基础学员,下面随小编一起看看吧。


集合的由来


  目前的学习的语言是一种面向对象语言,面向对象语言对事物的描述通过对象(属性,行为..)体现的,必须给对象进行操作,


  并且还要针对多个对象进行操作,(使用容器类型的变量):目前学习过的容器:数组和StringBuffer


1、数组:长度固定,不能满足长度变化的要求


2、StringBuffer:字符串缓冲区,在内存中始终返回的是String类型,也满足一些需求所以Java提供了一种技术:集合。



  集合和数组的区别:


  1、长度的区别


  数组长度是固定的.


  集合长度是可变的!


  2、存储数据类型的区别


  数组既可以存储基本数据类型,也可以存储引用数据类型


  集合只能存储引用数据类型


  3、存储元素的区别


  数组存储同一种类型的元素 举例: 水杯中的水


  集合可以存储多个类型的元素


  Collection 层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。 一些 collection 允许有重 复 的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。



  Collection集合中的功能


  1、添加功能:


  boolean add(Object obj):添加一个元素


  boolean addAll(Collection c):添加一个集合的元素 (给一个集合添加进另一个集合中的所有元素)


    2、删除功能:


  void clear():移除所有元素


  boolean remove(Object o):移除一个元素


  boolean removeAll(Collection c):移除一个集合的元素(移除一个以上返回的就是true) 删除的元素是两个集合交


  交集元素如果没有交集元素 则删除失败 返回false


  3、判断功能:


  boolean contains(Object o):判断集合中是否包含指定的元素


  boolean containsAll(Collection c):判断集合中是否包含指定的集合元素(这个集合 包含 另一个集合中所有的 元


  素才算包含才返回true)


  比如:1,2,3 containsAll 12=true 1,2,3 containsAll 2,3,4=false


  boolean isEmpty():判断集合是否为空


  4、获取功能:


  Iteratoriterator()(重点)


  5、长度功能:


  int size():元素的个数


     6、交集功能:


  例如:A集合对B集合取交集,获取到的交集元素在A集合中。返回的布尔值表示的是A集合是否发生变化


  boolean retainAll(Collection c):获取两个集合的交集元素(交集:两个集合都有的元素)


  把集合转换为数组:


  Object[] toArray()


  注:方法名后面带ALL的都是集合的高级功能;


  Collection集合基本功能的举例:


public class CollectionDemo {

public static void main(String[] args) {

//不带all的功能属于Collection基本功能:

//创建集合对象

//Collection c = new Collection() ;   不能实例化的

Collection c = new ArrayList() ; //利用List接口的子实现类来实例化

System.out.println(c);//[]   集合没有元素:[]   内部中重写了Object的toString方法

//boolean add(Object e):添加单个元素

//System.out.println(c.add("hello"));

/**

* ArrayList的add方法的源码

*   public boolean add(E e) {

        ensureCapacityInternal(size + 1);  // Increments modCount!!

        elementData[size++] = e;

        return true;  //只要添加元素,就返回true

    }

*/

c.add("hello") ;

c.add(100);

c.add("world") ;

c.add("java") ;

System.out.println(c);

//void clear();

//c.clear(); 

//remove(Object o)

System.out.println(c.remove("java"));

System.out.println(c);

//boolean contains(Object o):一个集合中是否包含指定的元素

System.out.println(c.contains("android")) ;

//boolean isEmpty():判断集合是否为空. 空,就是true

System.out.println(c.isEmpty());

System.out.println(c.size());

}

}


Collection集合高级功能的举例:



public class CollectionDemo2 {

public static void main(String[] args) {

//创建两个集合对象

Collection c1  = new ArrayList();

Collection c2  = new ArrayList();

//分别给集合c1,c2中添加元素

c1.add("abc1") ;

c1.add("abc2") ;

c1.add("abc3") ;

c1.add("abc4") ;

//c2.add("abc1") ;

//c2.add("abc2") ;

//c2.add("abc3") ;

c2.add("abc4") ;

//c2.add("abc5") ;

//c2.add("abc6") ;

//c2.add("abc7") ;

System.out.println("c1:"+c1);

System.out.println("c2:"+c2);

System.out.println("-------------------------");

//boolean addAll(Collection c):添加一个集合中的所有元素,添加到c1中

//System.out.println("addAll():"+c1.addAll(c2));

//removeAll(Collection c):移除一个集合中的元素   

//System.out.println("removeAll():"+c1.removeAll(c2));  //删除一个算是删除!,删除返回true

//boolean containsAll(Collection c):包含一个集合中的元素  

//System.out.println("containsAll():"+c1.containsAll(c2)); //包含所有算是包含

/**

* A集合对B集合取交集,交集的元素的去A集合里面了,返回的boolean表达的意思A集合中的                       

* 元素是否发生变化.如果没有变化,false 否则,true

*/

//boolean retainAll(Collection c) 

System.out.println("retainAll():"+c1.retainAll(c2));

                System.out.println("c1:"+c1);

System.out.println("c2:"+c2);


}

}



  Collection集合迭代器的作用和原理:


  迭代器作用: 对 collection集合进行迭代的迭代器迭代。


  集合的专有遍历方式: (迭代器)


  Iteratoriterator()


  在Iterator中有


  boolean hasNext()


  Obect next()返回迭代的下一个元素。


  迭代器的使用举例:


package westos.org.collection_demo2;

 

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

 

 

public class CollectionTest2 {

public static void main(String[] args) {

//创建集合对象

Collection  collection = new ArrayList() ;

//给集合中添加几个字符串元素

collection.add("hello") ;

collection.add("java") ;

collection.add("world") ;

collection.add("hadoop") ;

//专有迭代的遍历方式

//获取迭代器

Iterator iterator = collection.iterator() ; //实现方式:底层有一个内部类

while(iterator.hasNext()) {//看有没有下一个元素

System.out.println(iterator.next());//获取下一个元素

                //上述方式直接输出了,如果要获取字符串内容的同时,获取长度

String str = (String)iterator.next() ;

System.out.println(str+"---"+str.length());

}

}

}

 


迭代器的源码:



public interface Iterable{

Iteratoriterator();

}

//接口

interface Iterator{

boolean hasNext() ;

Object next() ;

}

 

interface Collection{

 

}

 

interface List extends Collection{

}

 

 

class ArrayList implements List{

  public Iteratoriterator() {

        return new Itr(); //匿名对象:Itr

     }

     

     

     //内部类:Itr

      private class Itr implements Iterator{

      //判断是否有下一个元素

         public boolean hasNext() {

            return cursor != size;

        }

       

        //获取下一个迭代的元素

        public E next() {

       }

       

      }

}

 

以上就是动力节点java培训机构小编分享的“集合的概述,Collection集合及其功能,集合中迭代器的原理”的内容,希望能够帮助到各位小伙伴们,更多java最新资讯请关注动力节点java培训机构官网,每天会有精彩内容分享与你。


相关免费视频教程推荐


Collection集合迭代器(视频教程下载):http://www.bjpowernode.com/xiazai/2489.html


开班信息

同类文章

微信搜索“动力节点Java学院“或扫二维码

关注官方微信免费领学习资料

动力节点Java培训机构,行业口碑最好的Java培训机构。

立即抢名额