Java是一门面向对象的语言,那么我们写程序的时候最经常操作的便是对象了,为此,Java提供了一些专门用来处理对象的类库,这些类库的集合我们称之为集合框架。Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组、链表、栈、队列、集合、哈希表等。学习Java集合框架下大致可以分为如下五个部分:List列表、Set集合、Map映射、迭代器(Iterator、Enumeration)、工具类(Arrays、Collections)。

Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。

可以看到Collection并没有直接实现类,而是提供更具体的子接口实现。通过查询API,可以总结出Collection的基本功能。

1、添加

boolean add(E e):添加一个元素

boolean addAll(Collection<? extends E> c):添加一个集合的元素

示例代码

 package collection;

 import java.util.ArrayList;
 import java.util.Collection;

 public class CollectionDemo1 {
     public static void main(String[] args) {
         Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
         collection1.add("红楼梦");
         collection1.add("三国演义");
         System.out.println(collection1);

         Collection collection2 = new ArrayList();
         collection2.add("西游记");
         collection2.add("水浒传");

         collection1.add(collection2);
         System.out.println(collection1);
     }
 }

输出结果:

[红楼梦, 三国演义]
[红楼梦, 三国演义, [西游记, 水浒传]]

2、删除

void clear():清空集合中的所有元素

boolean remove(Object o):移除指定的元素

boolean removeAll(Collection<?> c):移除一个集合的元素

示例代码

 package collection;

 import java.util.ArrayList;
 import java.util.Collection;

 public class CollectionDemo2 {
     public static void main(String[] args) {
         Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
         collection1.add("红楼梦");
         collection1.add("三国演义");
         collection1.add("西游记");
         collection1.add("水浒传");
         System.out.println("初始状态:" + collection1);

         boolean b1 = collection1.remove("红楼梦");
         System.out.println("是否移除了元素:" + b1);
         System.out.println("移除一个元素:" + collection1);
         System.out.println();

         Collection collection2 = new ArrayList();
         collection2.add("三国演义");
         collection2.add("西游记");
         collection2.add("平凡的世界");
         boolean b2 = collection1.removeAll(collection2); // 移除两个集合的交集,只要有一个元素被移除了,就返回true
         System.out.println("移除一个集合:" + collection1);
         System.out.println("是否移除了元素:" + b2);
         System.out.println();

         Collection collection3 = new ArrayList();
         collection3.add("平凡的世界");
         collection3.add("围城");
         boolean b3 = collection1.removeAll(collection3);// 移除两个集合的交集,只要有一个元素被移除了,就返回true
         System.out.println("移除一个集合:" + collection1);
         System.out.println("是否移除了元素:" + b3);
         System.out.println();

         collection1.clear();
         System.out.println("清除集合中的所有元素:" + collection1);
     }
 }

输出结果

初始状态:[红楼梦, 三国演义, 西游记, 水浒传]
是否移除了元素:true
移除一个元素:[三国演义, 西游记, 水浒传]

移除一个集合:[水浒传]
是否移除了元素:true

移除一个集合:[水浒传]
是否移除了元素:false

清除集合中的所有元素:[]

3、判断

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

boolean containsAll(Collection<?> c):判断集合是否包含指定的集合元素

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

示例代码

 package collection;

 import java.util.ArrayList;
 import java.util.Collection;

 public class CollectionDemo3 {
     public static void main(String[] args) {
         Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
         collection1.add("红楼梦");
         collection1.add("三国演义");
         collection1.add("西游记");
         collection1.add("水浒传");
         System.out.println("是否包含红楼梦:" + collection1.contains("红楼梦"));

         Collection collection2 = new ArrayList();
         collection2.add("三国演义");
         collection2.add("西游记");
         collection2.add("平凡的世界");
         System.out.println("是否包含一个集合中元素:" + collection1.containsAll(collection2)); // 包含所有才包含

         System.out.println("集合是否为空:" + collection1.isEmpty());
     }
 }

输出结果

是否包含红楼梦:true
是否包含一个集合中元素:false
集合是否为空:false

4、获取长度

int size():获取集合中元素的个数

示例代码

 package collection;

 import java.util.ArrayList;
 import java.util.Collection;

 public class CollectionDemo4 {
     public static void main(String[] args) {
         Collection collection = new ArrayList(); // Collection是接口,实例化其子类
         collection.add("红楼梦");
         collection.add("三国演义");
         collection.add("西游记");
         collection.add("水浒传");
         System.out.println("元素个数:" + collection.size());
     }
 }

输出结果

元素个数:4

5、交集

boolean retainAll(Collection<?> c):保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。换句话说,移除此 collection 中未包含在指定 collection 中的所有元素。

示例代码

 package collection;

 import java.util.ArrayList;
 import java.util.Collection;

 public class CollectionDemo5 {
     public static void main(String[] args) {
         Collection collection1 = new ArrayList(); // Collection是接口,实例化其子类
         collection1.add("红楼梦");
         collection1.add("三国演义");
         collection1.add("西游记");
         collection1.add("水浒传");

         Collection collection2 = new ArrayList();
         collection2.add("西游记");
         collection2.add("水浒传");
         System.out.println(collection1.retainAll(collection2));
         System.out.println("collection1:" + collection1);
         System.out.println("collection2:" + collection2);

         Collection collection3 = new ArrayList();
         collection3.add("西游记");
         collection3.add("平凡的世界");
         System.out.println(collection1.retainAll(collection3));
         System.out.println("collection1: " + collection1);
         System.out.println("collection3: " + collection3);
     }
 }

输出结果

true
collection1:[西游记, 水浒传]
collection2:[西游记, 水浒传]
true
collection1: [西游记]
collection3: [西游记, 平凡的世界]

从上面结果分析得知,collection1集合与collection2集合做交集运算,最后的结果保留在collection1中,而collection2中的元素保持不变。

6、集合转数组

Object[] toArray():集合转数组

示例代码

 package collection;

 import java.util.ArrayList;
 import java.util.Collection;

 public class CollectionDemo6 {
     public static void main(String[] args) {
         Collection collection = new ArrayList(); // Collection是接口,实例化其子类
         collection.add("红楼梦");
         collection.add("三国演义");
         collection.add("西游记");
         collection.add("水浒传");

         Object[] objects = collection.toArray();

         for (Object object : objects) {
             System.out.println(object);
         }
     }
 }

输出结果

红楼梦
三国演义
西游记
水浒传

7、遍历

Iterator<E> iterator():返回在此 collection 的元素上进行迭代的迭代器,迭代器是集合特有的遍历方式,所以迭代器是依赖于集合存在的,其中Iterator是一个接口,其有3个方法

boolean hasNext():如果仍有元素可以迭代,则返回 true。

E next():返回迭代的下一个元素,并移动到下一个位置。

void remove():从迭代器指向的 collection 中移除迭代器返回的最后一个元素

示例代码

 package collection;

 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;

 public class CollectionDemo7 {
     public static void main(String[] args) {
         Collection collection = new ArrayList(); // Collection是接口,实例化其子类
         collection.add("红楼梦");
         collection.add("三国演义");
         collection.add("西游记");
         collection.add("水浒传");

         Iterator it = collection.iterator();

         while (it.hasNext()) {
             Object object = it.next();
             System.out.println(object);
         }

         it.remove(); // 如果未调用next方法,则会抛出IllegalStateException异常
         System.out.println(collection);
     }
 }

输出结果

红楼梦
三国演义
西游记
水浒传
[红楼梦, 三国演义, 西游记]

我们可以把迭代器看成是一个指向集合的游标或者是指针,我们用黑色箭头表示迭代器,遍历集合之前的初始位置如下:

当代码执行it.hasNext()语句时,此时迭代器会判断后面是否还有元素,有的话,当代码it.next()执行时,则取出了当前迭代的元素红楼梦,同时迭代器向后移动了一个位置,

以此类推,当迭代器走到集合的最后位置时,语句it.hasNext()返回false,程序跳出循环,迭代结束。

至此,Collection接口的方法介绍完毕。下一篇介绍Collection的子接口List,Java集合框架之List接口

Java集合框架之Collection接口的更多相关文章

  1. Java学习--java中的集合框架、Collection接口、list接口

    与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...

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

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

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

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

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

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

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

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

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

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

  7. Java基础之集合框架(Collection接口和List接口)

    首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关 ...

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

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

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

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

随机推荐

  1. Run same command on all SQL Server databases without cursors

    original: https://www.mssqltips.com/sqlservertip/1414/run-same-command-on-all-sql-server-databases-w ...

  2. saiku 展示优化第二步(要诀和技巧)

    经历了上几篇博客的分享,可以无密码登录 : http://www.cnblogs.com/liqiu/p/5246015.html 随着使用的深入,公司需要将现有的报表平台与saiku整合,其中最便捷 ...

  3. 谈谈CSS预处理技术中for循环的应用-CSS Sprite

    各种新技术的出现,推动着Web前端技术飞速发展,在提升用户体验的同时也方便开发者: 在前端优化时,我们使用CSSSprite技术,把多个图片合在一张图片上,然后通过background-image,b ...

  4. js获取url参数值的方法

    index.htm?参数1=数值1&参数2=数值2&参数3=数据3&参数4=数值4&...... 静态html文件js读取url参数 根据获取html的参数值控制htm ...

  5. SQL Server 中关于 @@error 的一个小误区

    在SQL Server中,我常常会看到有些前辈这样写: ) ROLLBACK TRANSACTION T else COMMIT TRANSACTION T 一开始,我看见别人这么写,我就想当然的以为 ...

  6. Rails4 中 因为secret key 引起在production环境下无法运行

    错误信息 Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` ...

  7. VB6.0手册

    1.Form窗体事件 Private Sub Form_Activate() '焦点在此窗口时触发  MsgBox "窗体的Activate事件"  End Sub    Priv ...

  8. 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:

    php 5个版本,5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器直接上5.5,但是程序出现如下错误:Deprecated: mysql_connect(): The mysql extens ...

  9. 解决git中文乱码

    和linux平台一样,在默认设置下,文件名称中包含中文的文件,在工作区状态输出.查看历史更改概要,以及在补丁文件中,文件名中的中文不能正确的显示,而是用若干八进制字符编码来显示,如下: git sta ...

  10. SecureCRT rz 上传文件失败问题

    在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要 ...