Java基础(二十)集合(2)Collection接口
1.Collection接口通常不被直接使用。但是Collection接口定义了一些通用的方法,通过这些方法可以实现对集合的基本操作,因为List接口和Set接口都实现了Collection接口,所以这些方法对List集合和Set集合时通用的。
创建一个集合类可以这样定义:
Collection<String> list_1 = new ArrayList<>();
由于Java中不能对接口进行实例化,而Collection接口的子接口是List接口,ArrayList类实现了List接口,所以可以通过ArrayList类实例化并声明为Collection类型。
2.Collection接口定义的常用方法

(1)addAll(Collection<? extends E> col)方法:用来将指定集合中的所有对象添加到该集合中。如果对该集合进行了泛化,则要求指定集合中的所有对象都符合泛化类型,否则在编译程序时将抛出异常,其中E为用来泛化的类型。
package collection.jun.iplab; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class MethodTest_addAdd { public static void main(String[] args) { String a = "A";
String b = "B";
String c = "C"; Collection<String> list_1 = new ArrayList<>();
list_1.add(a);
list_1.add(b); Collection<String> list_2 = new ArrayList<>();
// 由于list_1中的对象类型都是String, 同时list_2的泛型定义为String, 才可以使用这个方法。
list_2.addAll(list_1);
list_2.add(c); Iterator<String> it_1 = list_1.iterator();
while (it_1.hasNext()) {
String str = (String) it_1.next();
System.out.print(str + " ");
} System.out.println(); Iterator<String> it_2 = list_2.iterator();
while (it_2.hasNext()) {
String str = (String) it_2.next();
System.out.print(str + " ");
}
}
} 输出:
A B
A B C
(2)removeAll(Collection<? col)方法:用来从集合中移除同时包含在指定集合中的对象,与retainAll()方法正好相反。如果存在符合移除条件的对象则返回true,否则返回false。
package collection.jun.iplab; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class MethodTest_removeAll { public static void main(String[] args) { String a = "A";
String b = "B";
String c = "C"; Collection<String> list_1 = new ArrayList<>();
list_1.add(a);
list_1.add(b); Collection<String> list_2 = new ArrayList<>();
list_2.add(a);
list_2.add(b); Collection<String> list_3 = new ArrayList<>();
list_3.add(b);
list_3.add(c); Collection<String> list_4 = new ArrayList<>();
list_4.add(c); boolean isContain_1_3 = list_1.removeAll(list_3);
System.out.print(isContain_1_3 + " "); Iterator<String> it_1 = list_1.iterator();
while (it_1.hasNext()) {
String str = (String) it_1.next();
System.out.print(str + " ");
} System.out.println(); boolean isContain_2_4 = list_2.removeAll(list_4);
System.out.print(isContain_2_4 + " "); Iterator<String> it_2 = list_2.iterator();
while (it_2.hasNext()) {
String str = (String) it_2.next();
System.out.print(str + " ");
} }
} 输出:
true A
false A B
(3)retainAll(Collection<? col)方法:仅保留该集合中同时包含在指定集合中的对象,其他的全部移除,与removeAll()方法正好相反。如果存在符合移除条件的对象则返回true,否则返回false。
package collection.jun.iplab; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class MethodTest_retainAll { public static void main(String[] args) { String a = "A";
String b = "B";
String c = "C"; Collection<String> list_1 = new ArrayList<>();
list_1.add(a);
list_1.add(b); Collection<String> list_2 = new ArrayList<>();
list_2.add(b); Collection<String> list_3 = new ArrayList<>();
list_3.add(b);
list_3.add(c); // list_1中的b为list_3中也有的对象,所以仅保留b,返回true
boolean isContain_1_3 = list_1.retainAll(list_3);
System.out.print(isContain_1_3 + " "); Iterator<String> it_1 = list_1.iterator();
while (it_1.hasNext()) {
String str = (String) it_1.next();
System.out.print(str + " ");
} System.out.println(); // list_3中的c为list_2中没有的对象,所以返回false,不移除数据。
boolean isContain_2_3 = list_2.retainAll(list_3);
System.out.print(isContain_2_3 + " "); Iterator<String> it_2 = list_2.iterator();
while (it_2.hasNext()) {
String str = (String) it_2.next();
System.out.print(str + " ");
} }
} 输出:
true B
false B
(4)containAll()方法:查看在该集合中是否存在指定集合中的所有对象。如果存在则返回true,否则返回false。
package collection.jun.iplab; import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator; public class MethodTest_containAll { public static void main(String[] args) { String a = "A";
String b = "B";
String c = "C"; Collection<String> list_1 = new ArrayList<>();
list_1.add(a);
list_1.add(b); Collection<String> list_2 = new ArrayList<>();
list_2.add(b); Collection<String> list_3 = new ArrayList<>();
list_3.add(b);
list_3.add(c); boolean isContain_1_2 = list_1.containsAll(list_2);
System.out.print(isContain_1_2 + " "); System.out.println(); boolean isContain_1_3 = list_1.containsAll(list_3);
System.out.print(isContain_1_3 + " "); }
} 输出:
true
false
(5)toArray(T[] t)方法:用来获得一个包含所有对象的指定类型的数组。
package collection.jun.iplab; import java.util.ArrayList;
import java.util.Collection; public class MethodTest_toArray { public static void main(String[] args) { String a = "A";
String b = "B";
String c = "C"; Collection<String> list = new ArrayList<>();
list.add(a);
list.add(b);
list.add(c); // 创建一个String类型的数组对象的实例
String[] strs = new String[1];
// 将数组类型的实例传递进来,用来指定想要获得的数组的类型为String
String[] strs_2 = list.toArray(strs); for (String string : strs) {
System.out.print(string + " ");
} System.out.println(); for (int i = 0; i < strs_2.length; i++) {
String string = strs_2[i];
System.out.print(string + " ");
} }
} 输出:
null
A B C
Java基础(二十)集合(2)Collection接口的更多相关文章
- Java精选笔记_集合概述(Collection接口、Collections工具类、Arrays工具类)
集合概述 集合有时又称为容器,简单地说,它是一个对象,能将具有相同性质的多个元素汇聚成一个整体.集合被用于存储.获取.操纵和传输聚合的数据. 使用集合的技巧 看到Array就是数组结构,有角标,查询速 ...
- 夯实Java基础(十)——抽象类和接口
转载自:http://cmsblogs.com/ 该博主的网站上干货非常!非常!非常多(说三遍),强烈推荐大家前去学习. 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法 抽象类与接口是 ...
- 夯实Java基础(二十五)——JDBC使用详解
1.JDBC介绍 JDBC的全称是Java Data Base Connectivity(Java数据库连接).是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问(例如MyS ...
- Java笔记(二十二)……Collection集合
概述 为什么会出现集合类 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式 数组和集合类同是容器,有何不同 数组虽然也可以存储 ...
- Java从零开始学二十(集合简介)
一.为什么需要集合框架 数组的长度是固定的,但是如果写程序时并不知道程序运行时会需要多少对象.或者需要更复杂的方式存储对象,---那么,可以使用JAVA集合框架,来解决这类问题 二.集合框架主要接口 ...
- 第二十八节:Java基础-进阶继承,抽象类,接口
前言 Java基础-进阶继承,抽象类,接口 进阶继承 class Stu { int age = 1; } class Stuo extends Stu { int agee = 2; } class ...
- “全栈2019”Java第八十九章:接口中能定义内部类吗?
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第八十四章:接口中嵌套接口详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第六十五章:接口与默认方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第六十四章:接口与静态方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
随机推荐
- 彻底关闭Windows10的更新
Windows10的自动更新太恶心,关闭之后总能死灰复燃,更新偶尔占用大量的CPU内存,非常影响使用.而网上大多数都是关闭服务之类的方法,但是关闭之后没过多久又会重新自动启动,如何彻底摆脱wiondo ...
- 构建之法——homework1:问题思考
1.我看了第一章概论,1.2.4 软件工程的目标——创造“足够好”的软件,其中提到了什么是好的软件? 软件工程的一个要素就是把软件的Bug都消灭掉的过程. 提问:我们知道Bug是不可能完全消灭掉的, ...
- Spring 梳理-启用MVC
启用注解启动的Spring MVC xml <mvc:annotation-dirven> <mvc:annotation-driven /> 是一种简写形式,完全可以手动配置 ...
- 【SQL server】SQL Server 触发器
触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删 ...
- C#2匿名方法中的捕获变量
乍一接触"匿名方法中的捕获变量"这一术语可能会优点蒙,那什么是"匿名方法中的捕获变量"呢?在章节未开始之前,我们先定义一个委托:public delegate ...
- C++之路 #1
一.C++介绍C++是C语言的继承,它可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计.C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计 ...
- uC/OS-III 任务详解(四)
uC/OS系统的任务一般都放在最开始介绍,我放在第四章主要是对模糊的概念作清晰的讲解. 从用户的角度来看,uC/OS-III 中的任务可以分为5 种状态,分别是休眠态.就绪态.运行态.挂起态和中断态, ...
- win7环境搭建以太坊私链
如何创建私链: 创建创世配置文件: 首先需要创建一个“创世”json配置文件,此文件描述了创世区块的一些参数.下面就是文件中的内容: { "coinbase": "0x0 ...
- java 远程方法调用(RMI)
什么是RMI? 维基百科:一种用于实现远程过程调用的应用程序编程接口.它使客户机上运行的程序可以调用远程服务器上的对象. 什么是序列化及反序列化 (1)序列化:把对象转换为字节序列的过程称为对象的序列 ...
- IP的分类以及子网划分、网络设置
前言 整个因特网就是一个单一的.抽象的的网络.IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围是唯一的32位的标识符.IP地址的结构使我们可以在因特网上很方便的进行寻址. ...