- 浏览: 521815 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (114)
- C基础 (1)
- C指针 (0)
- C语言库函数相关 (1)
- Linux (2)
- Linux网络编程 (1)
- PostgreSQL (0)
- Redis (2)
- Java Web (2)
- JAVA基础 (35)
- Ubuntu (8)
- Android (2)
- MySQL (3)
- 日志 (1)
- 书虫 (1)
- 数据结构 (0)
- 算法 (0)
- 开发工具 (1)
- 转载 (13)
- 英语 (18)
- tomcat启动脚本分析 (3)
- Oracle基础 (4)
- tomcat源码分析 (3)
- tomcat (1)
- Java相关 (1)
- Oracle基本原理--Oracle体系结构 (0)
- Oracle基本原理--表 (0)
- Oracle基本原理--索引 (0)
- Oracle基本原理--事务 (0)
- Oracle开发--SQL (1)
- Oracle基本原理--PL/SQL (0)
- Oracle基本原理--常用函数 (0)
- Oralce管理--用户及权限管理 (0)
- Oracle管理--安装调试 (0)
- Oracle管理--备份恢复 (0)
- Oralce管理--数据迁移 (0)
- Oracle管理--闪回 (0)
- Oracle管理--故障处理 (0)
- Oracle优化原理--统计信息 (0)
- Oracle优化原理--执行计划 (0)
- Oracle优化原理--诊断工具 (0)
- Oracle优化原理--深入理解表 (0)
- Oracle优化原理--深入理解索引 (0)
- Oracle优化原理--表连接原理 (0)
- Java--OOP (0)
- Java--异常 (0)
- Java--泛型 (0)
- Java--集合 (0)
- Java--IO (0)
- Java--枚举类型 (0)
- Java--注释 (0)
- Java--多线程 (0)
- Java--XML (0)
- Java--JDBC (3)
- Servlet (0)
- JSP (0)
- JSTL (0)
- 设计模式 (0)
- DAO与MVC (0)
- Javascript (2)
- Ajax (0)
- JQuery (0)
- HTML/CSS (0)
- 前端相关 (1)
- HTTP (0)
- TCP/IP (0)
- GO基础 (0)
最新评论
-
jsonmong:
推荐一个开发平台,采用的是插件化的设计思想,效果很不错的。ht ...
构建Java Web开发环境 -
wxm198427:
首先表示辛苦了!我想问个问题:我的是windows 7 x64 ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
握着橄榄枝的人:
我之前按照你的update mysql.user set pa ...
Windows7下MySQL5.5.20免安装版的配置 -
confident_f:
安装了32的客户端后,用plsql导入导出表有问题,生成不了d ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
confident_f:
安装数据库的时候第9步卡住了 是怎么回事呢?
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
1、集合类概述
在java.util包中提供了一些集合类,常用的有List、Set和Map类,其中List类和Set类继承了Collection接口。这些集合类又称为容器,它们与数组不同,数组的长度是固定的,而集合的长度是可变的,数组用来存放基本数据类型的数据,集合用来存放类对象的引用。
List接口、Set接口、Map接口以及Collection接口的主要特征如下:
● Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用。
● List接口继承了Collection接口,List接口允许存放重复的对象,排序方式为按照对象的插入顺序。
● Set接口继承了Collection接口,Set接口不允许存放重复的对象,排序方式为按照自身内部的排序规则。
● Map接口以键值对(key—value)的形式存放对象,其中键(key)对象不可以重复,值(value)对象可以重复,排序方式为按照自身内部的规则。
上述集合类的继承关系如下图1所示:
2、Collection接口
Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用,不过Collection接口中定义了一些通用的方法,通过这些方法可以实现对集合的基本操作,因为List接口和Set接口继承了Collection接口,所以这些方法对List集合和Set集合是通用的,Collection接口定义的常用方法及功能如下表1所示:
(1)addAll(Collection<? extends E> col)方法
addAll(Collection<? extends E> col)方法用来将指定集合中的所有对象添加到该集合中。如果对该集合进行了泛化,则要求指定集合中的所有对象都符合泛化类型,否则在编译程序时将抛出异常,入口参数中的“<? extends E>”说明了这个问题,其中的E为用来泛化的类型。
例如:
程序运行结果如下:
A
B
C
注意:由于Collection是接口,不能直接对其进行实例化,而ArrayList类是Collection接口的间接实现类,因此可以通过ArrayList类实现Collection的实例化。
(2)removeAll(Collection<?> col)方法
removeAll(Collection<>> col)方法用来从该集合中移除同时包含在指定集合中的对象,与retainAll()方法正好相反。返回值为boolean型,如果存在符合移除条件的对象则返回True,否则返回False。
例如:
程序运行结果1:(没有注释掉list2.add(b);)
是否存在符合移除条件的对象:true
list1中的对象如下:
A
程序运行结果2:(注释掉了list2.add(b);)
是否存在符合移除条件的对象:false
list1中的对象如下:
A
B
(3)retainAll(Collection<?> col)方法
retainAll(Collection<?> col)方法仅保留该集合中同时包含在指定集合中的对象,其他的全部移除,与removeAll()方法正好相反。返回值boolean型,如果存在符合移除条件的对象则返回True,否则返回False。
例如:
程序运行结果1:(没有注释掉list1.add(a);)
是否存在符合移除条件的对象:true
list1中的对象如下:
B
程序运行结果2:(注释掉了list1.add(a);)
是否存在符合移除条件的对象:false
list1中的对象如下:
B
(4)containsAll(Collection<?> col)方法
containsAll(Collection<?> col)方法用来查看在该集合中是否存在指定集合中的所有对象。返回值为boolean型,如果存在则返回True,否则返回False。
例如:
程序运行结果1:(没有注释掉list2.add(c);)
list1中是否存在list2中的所有对象:false
程序运行结果2:(注释掉了list2.add(c);)
list1中是否存在list2中的所有对象:true
(5)toArray(T[] t)方法
toArray(T[] t)方法用来获得一个包含所有对象的指定类型的数组。toArray(T[] t)方法的入口参数必须为数组类型的实例,并且必须已经被初始化,它的作用是用来指定欲获得数组的类型,如果对调用toArray(T[] t)方法的实例进行了泛化,还要求入口参数的类型必须符合泛化类型。
例如:
程序运行结果如下:
数组s2中的元素如下:
A
B
C
在java.util包中提供了一些集合类,常用的有List、Set和Map类,其中List类和Set类继承了Collection接口。这些集合类又称为容器,它们与数组不同,数组的长度是固定的,而集合的长度是可变的,数组用来存放基本数据类型的数据,集合用来存放类对象的引用。
List接口、Set接口、Map接口以及Collection接口的主要特征如下:
● Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用。
● List接口继承了Collection接口,List接口允许存放重复的对象,排序方式为按照对象的插入顺序。
● Set接口继承了Collection接口,Set接口不允许存放重复的对象,排序方式为按照自身内部的排序规则。
● Map接口以键值对(key—value)的形式存放对象,其中键(key)对象不可以重复,值(value)对象可以重复,排序方式为按照自身内部的规则。
上述集合类的继承关系如下图1所示:

2、Collection接口
Collection接口是List接口和Set接口的父接口,通常情况下不被直接使用,不过Collection接口中定义了一些通用的方法,通过这些方法可以实现对集合的基本操作,因为List接口和Set接口继承了Collection接口,所以这些方法对List集合和Set集合是通用的,Collection接口定义的常用方法及功能如下表1所示:

(1)addAll(Collection<? extends E> col)方法
addAll(Collection<? extends E> col)方法用来将指定集合中的所有对象添加到该集合中。如果对该集合进行了泛化,则要求指定集合中的所有对象都符合泛化类型,否则在编译程序时将抛出异常,入口参数中的“<? extends E>”说明了这个问题,其中的E为用来泛化的类型。
例如:
import java.util.*; public class TestCollection{ public static void main(String args[]){ String a = "A"; String b = "B"; String c = "C"; Collection<String> list1 = new ArrayList<String>(); list1.add(a);//通过add(E obj)方法添加指定的对象到集合中 list1.add(b); Collection<String> list2 = new ArrayList<String>(); list2.addAll(list1);//通过addAll(Collection<? extends E> col)方法添加指定集合中的所有对象到该集合中 list2.add(c); Iterator<String> it = list2.iterator();//通过iterator()方法序列化集合中的所有对象 while(it.hasNext()){ String s = it.next();//因为对实例it进行了泛化,所以不需要进行强制类型转换 System.out.println(s); } } }
程序运行结果如下:
A
B
C
注意:由于Collection是接口,不能直接对其进行实例化,而ArrayList类是Collection接口的间接实现类,因此可以通过ArrayList类实现Collection的实例化。
(2)removeAll(Collection<?> col)方法
removeAll(Collection<>> col)方法用来从该集合中移除同时包含在指定集合中的对象,与retainAll()方法正好相反。返回值为boolean型,如果存在符合移除条件的对象则返回True,否则返回False。
例如:
String a = "A"; String b = "B"; String c = "C"; Collection<String> list1 = new ArrayList<String>(); list1.add(a); list1.add(b); Collection<String> list2 = new ArrayList<String>(); list2.add(b);//注释该行,再运行 list2.add(c); boolean isContains = list1.removeAll(list2); System.out.println("是否存在符合移除条件的对象:"+isContains); Iterator<String> it = list1.iterator(); System.out.println("list1中的对象如下:"); while(it.hasNext()){ String s = it.next(); System.out.println(s); }
程序运行结果1:(没有注释掉list2.add(b);)
是否存在符合移除条件的对象:true
list1中的对象如下:
A
程序运行结果2:(注释掉了list2.add(b);)
是否存在符合移除条件的对象:false
list1中的对象如下:
A
B
(3)retainAll(Collection<?> col)方法
retainAll(Collection<?> col)方法仅保留该集合中同时包含在指定集合中的对象,其他的全部移除,与removeAll()方法正好相反。返回值boolean型,如果存在符合移除条件的对象则返回True,否则返回False。
例如:
String a = "A"; String b = "B"; String c = "C"; Collection<String> list1 = new ArrayList<String>(); list1.add(a);//注释该行,再运行 list1.add(b); Collection<String> list2 = new ArrayList<String>(); list2.add(b); list2.add(c); boolean isContains = list1.retainAll(list2); System.out.println("是否存在符合移除条件的对象:"+isContains); Iterator<String> it = list1.iterator(); System.out.println("list1中的对象如下:"); while(it.hasNext()){ String s = it.next(); System.out.println(s); }
程序运行结果1:(没有注释掉list1.add(a);)
是否存在符合移除条件的对象:true
list1中的对象如下:
B
程序运行结果2:(注释掉了list1.add(a);)
是否存在符合移除条件的对象:false
list1中的对象如下:
B
(4)containsAll(Collection<?> col)方法
containsAll(Collection<?> col)方法用来查看在该集合中是否存在指定集合中的所有对象。返回值为boolean型,如果存在则返回True,否则返回False。
例如:
String a = "A"; String b = "B"; String c = "C"; Collection<String> list1 = new ArrayList<String>(); list1.add(a); list1.add(b); Collection<String> list2 = new ArrayList<String>(); list2.add(b); list2.add(c);//注释该行,再运行 boolean isContains = list1.containsAll(list2); System.out.println("list1中是否存在list2中的所有对象:"+isContains);
程序运行结果1:(没有注释掉list2.add(c);)
list1中是否存在list2中的所有对象:false
程序运行结果2:(注释掉了list2.add(c);)
list1中是否存在list2中的所有对象:true
(5)toArray(T[] t)方法
toArray(T[] t)方法用来获得一个包含所有对象的指定类型的数组。toArray(T[] t)方法的入口参数必须为数组类型的实例,并且必须已经被初始化,它的作用是用来指定欲获得数组的类型,如果对调用toArray(T[] t)方法的实例进行了泛化,还要求入口参数的类型必须符合泛化类型。
例如:
String a = "A"; String b = "B"; String c = "C"; Collection<String> list1 = new ArrayList<String>(); list1.add(a); list1.add(b); list1.add(c); String s1[] = new String[1]; String s2[] = list1.toArray(s1); System.out.println("数组s2中的元素如下:"); for(int i=0;i<s2.length;i++){ System.out.println(s2[i]); }
程序运行结果如下:
数组s2中的元素如下:
A
B
C
发表评论
-
foreach循环
2013-06-24 16:15 1495从JDK1.5开始,Java提供了一个更简单的循环:forea ... -
可变参数
2013-06-24 15:38 1224从JDK1.5开始,Java允许使用可变参数为方法指定数量不确 ... -
泛型(core java 笔记)
2013-06-18 16:18 20741.为什么引入泛型 package generic; ... -
两个程序的说明
2010-10-19 09:26 11661、程序1的结果是: clas ... -
构造器初始化
2010-10-18 14:42 1535可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动 ... -
成员初始化
2010-10-18 07:55 1247Java尽力保证:所有变量在使用前都能得到恰当的初始化。 对 ... -
线程的死锁
2010-10-11 19:21 1524当两个线程相互等待对方释放同步监视器时就会发生死锁,Java虚 ... -
线程的同步
2010-10-11 19:00 1290一个经典的关于线程安全性的问题:银行取钱问题。 银行取钱的基 ... -
java网站收集
2010-10-10 18:13 1295JAVA开发者最常去的25个英文网站:http://www.i ... -
控制线程
2010-10-10 16:06 20261、线程睡眠:sleep 如果我们需要让当前正在执行的线程暂 ... -
线程的状态
2010-09-28 19:00 1078线程从创建到执行完毕的整个过程称为线程的生命周期,在整个生命周 ... -
Java中Thread类的start()和run()的区别
2010-09-27 15:33 41381、start()方法来启动线程,真正实现了多线程运行,这时无 ... -
Java中创建线程的两种方法
2010-09-26 10:18 5648在Java中创建线程有两种方法:继承Thread类和实现Run ... -
创建String对象过程的内存分配小结
2010-09-23 20:32 2795常量池(Constant Pool):指的是在编译期被确定,并 ... -
Java堆和栈的区别 经典总结(转载)
2010-09-18 16:48 1289栈与堆都是Java用来在Ram中存放数据的地方。 与C++不 ... -
Java初学者都必须理解的七大问题
2010-09-18 10:36 1133问题一:我声明了什么 ... -
关于计算java程序运行时间(转载)
2010-09-18 09:22 1136//第一种,伪代码 long startTime= ... -
for循环的优化
2010-09-17 20:29 2159在程序中经常用到for循环,当一些算法实时性要求非常高时,对f ... -
详细解析Java中抽象类和接口的区别(转载)
2010-09-17 10:16 1127在Java语言中,abstract class和inter ... -
集合类(四):Map集合
2010-09-16 20:26 21555、Map集合 Map集合为映射类型,映射与集和列表有明显的区 ...
相关推荐
7. **多态与接口**:Collection接口的实现类,如ArrayList、LinkedList等,都是多态的,这意味着你可以声明一个Collection类型的引用,然后将其指向任意实现了Collection接口的具体类的对象,从而实现对不同集合类的...
- `Collection`接口是所有集合类的根接口,分为`List`和`Set`两大分支。 - `List`接口包括`ArrayList`和`LinkedList`等实现,`ArrayList`适合随机访问,`LinkedList`适合频繁的插入和删除操作。 - `Map`接口用于...
1. 接口:Collection 顶层接口是集合框架的核心接口,定义了集合的抽象数据类型。 Java 集合框架中常用的接口有: * Collection:顶层接口,定义了集合的抽象数据类型。 * List:继承自 Collection 接口,定义了一...
Collection接口是所有集合类的根接口,它定义了集合的基本操作,如添加元素、删除元素、检查元素是否存在等。常见的实现类有ArrayList、LinkedList、HashSet等。 #### 常用方法 - `add(E element)`:向集合中添加...
Java集合类可以分为两种:Collection接口和Map接口。Collection接口有两个子接口:List接口和Set接口。List接口是有序的,可以重复元素,常用的实现类有ArrayList和LinkedList。Set接口是无序的,不允许重复元素,...
`Collection`接口是Java集合框架中的核心接口之一,它是所有集合类的根接口,提供了一系列用于操作集合的基本方法。通过这个接口,我们可以执行添加、删除、遍历集合元素等基本操作。 #### 三、Collection接口的...
集合框架001-Collection接口10-12"的主题聚焦于Collection接口及其相关的概念,这包括链表、Vector和Stack的深入分析。下面将详细阐述这些知识点。 **Collection接口**: Collection是Java集合框架中最基础的接口,...
Java集合排序及Java集合类详解 Java集合框架是Java语言中最重要、最常用的部分之一,它能够使开发者更方便地处理数据结构。Java集合框架主要包括Collection、List、Set、Map四个接口,它们分别实现了不同的数据结构...
Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等...
在Java编程语言中,集合框架是处理对象组的重要工具,其中`Collection`是最基础的接口,它是所有集合类的根接口。在这个Java集合类的学习资料中,我们将深入探讨`Collection`以及与其相关的`TreeMap`、`Set`和`List`...
8.2 Collection接口: Collection接口定义了所有集合类应具备的基本操作。例如,`add()`方法用于插入元素,`addAll()`用于添加另一个集合的所有元素,`clear()`用于清空集合,`remove()`删除指定元素,`iterator()`...
· 接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成规范。 · 实现类:集合接口的具体实现,是重用性很高的数据结构。 ...
集合框架001-Collection接口21-23”表明我们将探讨的是集合框架中的Collection接口,以及与之相关的HashMap和TreeMap类。描述中提到的“21-23”可能是指三个视频教程的章节,分别深入分析了HashMap的源码、HashMap的...
Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...
集合框架001-Collection接口6-9"中涉及的关键知识点,包括`Collection`接口、`ArrayList`源码分析、`Comparator`接口以及`Comparable`接口,以及`Arrays`类中的算法。 首先,`Collection`接口是Java集合框架的根...
所有的集合类,无论是List、Set还是Queue,都直接或间接地继承自Collection接口。Collection接口定义了基本的集合操作,如添加元素(add),删除元素(remove),检查元素是否存在(contains)等。此外,它还提供了遍历...
- Queue 接口:一种特殊的List,用于在处理之前暂时存储对象的集合,常用于各种队列操作,如先进先出(FIFO)等。 每个子接口下又有不同的实现类,它们在集合框架中扮演着不同的角色,提供了各自独有的功能,比如...
总的来说,PHP中的`Collection`集合类是组织和操作数据的有效工具,它不仅提供了统一的数据接口,还能通过扩展实现更高级的功能,从而提高代码的灵活性和复用性。合理地利用`Collection`,可以使代码更加模块化,...
这些集合类和接口的设计旨在满足不同的需求,并提供了高效的数据管理和操作手段。Java集合框架主要由四个关键部分组成:接口、实现、算法和辅助类。下面我们将详细探讨这些概念。 #### 主要接口 1. **Collection**...