`
supportopensource
  • 浏览: 521815 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

集合类(一):Collection接口

阅读更多
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为用来泛化的类型。
例如:
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

  • 大小: 53.2 KB
  • 大小: 85.5 KB
分享到:
评论

相关推荐

    11.集合框架001-Collection接口4-5

    7. **多态与接口**:Collection接口的实现类,如ArrayList、LinkedList等,都是多态的,这意味着你可以声明一个Collection类型的引用,然后将其指向任意实现了Collection接口的具体类的对象,从而实现对不同集合类的...

    java笔记整理(超详细) java笔记整理(超详细)

    - `Collection`接口是所有集合类的根接口,分为`List`和`Set`两大分支。 - `List`接口包括`ArrayList`和`LinkedList`等实现,`ArrayList`适合随机访问,`LinkedList`适合频繁的插入和删除操作。 - `Map`接口用于...

    集合框架,java中常用的集合类和接口

    1. 接口:Collection 顶层接口是集合框架的核心接口,定义了集合的抽象数据类型。 Java 集合框架中常用的接口有: * Collection:顶层接口,定义了集合的抽象数据类型。 * List:继承自 Collection 接口,定义了一...

    Java集合:Collection、List、Set、Map使用详解

    Collection接口是所有集合类的根接口,它定义了集合的基本操作,如添加元素、删除元素、检查元素是否存在等。常见的实现类有ArrayList、LinkedList、HashSet等。 #### 常用方法 - `add(E element)`:向集合中添加...

    java常用集合类总结

    Java集合类可以分为两种:Collection接口和Map接口。Collection接口有两个子接口:List接口和Set接口。List接口是有序的,可以重复元素,常用的实现类有ArrayList和LinkedList。Set接口是无序的,不允许重复元素,...

    Java集合框架Collection接口.pdf

    `Collection`接口是Java集合框架中的核心接口之一,它是所有集合类的根接口,提供了一系列用于操作集合的基本方法。通过这个接口,我们可以执行添加、删除、遍历集合元素等基本操作。 #### 三、Collection接口的...

    11.集合框架001-Collection接口10-12

    集合框架001-Collection接口10-12"的主题聚焦于Collection接口及其相关的概念,这包括链表、Vector和Stack的深入分析。下面将详细阐述这些知识点。 **Collection接口**: Collection是Java集合框架中最基础的接口,...

    Java集合排序及java集合类详解(Collection、List、Map、Set).pdf

    Java集合排序及Java集合类详解 Java集合框架是Java语言中最重要、最常用的部分之一,它能够使开发者更方便地处理数据结构。Java集合框架主要包括Collection、List、Set、Map四个接口,它们分别实现了不同的数据结构...

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等...

    Java集合类(Collection)学习

    在Java编程语言中,集合框架是处理对象组的重要工具,其中`Collection`是最基础的接口,它是所有集合类的根接口。在这个Java集合类的学习资料中,我们将深入探讨`Collection`以及与其相关的`TreeMap`、`Set`和`List`...

    第8章 集合类与泛型程序设计

    8.2 Collection接口: Collection接口定义了所有集合类应具备的基本操作。例如,`add()`方法用于插入元素,`addAll()`用于添加另一个集合的所有元素,`clear()`用于清空集合,`remove()`删除指定元素,`iterator()`...

    Java 集合深入理解:Collection

     · 接口:表示集合的抽象数据类型。接口允许我们操作集合时不必关注具体实现,从而达到“多态”。在面向对象编程语言中,接口通常用来形成规范。  · 实现类:集合接口的具体实现,是重用性很高的数据结构。 ...

    11.集合框架001-Collection接口21-23

    集合框架001-Collection接口21-23”表明我们将探讨的是集合框架中的Collection接口,以及与之相关的HashMap和TreeMap类。描述中提到的“21-23”可能是指三个视频教程的章节,分别深入分析了HashMap的源码、HashMap的...

    Java集合排序及java集合类详解(Collection、List、Map、Set).doc

    Java集合排序及java集合类详解(Collection、List、Map、Set) Java 中的集合框架是 Java 语言中最重要和最常用的部分之一。它能够帮助开发者更方便地处理和存储数据,从而提高编程效率和程序的可读性。本文将详细...

    11.集合框架001-Collection接口6-9

    集合框架001-Collection接口6-9"中涉及的关键知识点,包括`Collection`接口、`ArrayList`源码分析、`Comparator`接口以及`Comparable`接口,以及`Arrays`类中的算法。 首先,`Collection`接口是Java集合框架的根...

    11.集合框架001-Collection接口13-16

    所有的集合类,无论是List、Set还是Queue,都直接或间接地继承自Collection接口。Collection接口定义了基本的集合操作,如添加元素(add),删除元素(remove),检查元素是否存在(contains)等。此外,它还提供了遍历...

    Collection集合继承结构图.pdf

    - Queue 接口:一种特殊的List,用于在处理之前暂时存储对象的集合,常用于各种队列操作,如先进先出(FIFO)等。 每个子接口下又有不同的实现类,它们在集合框架中扮演着不同的角色,提供了各自独有的功能,比如...

    php中的Collection集合类

    总的来说,PHP中的`Collection`集合类是组织和操作数据的有效工具,它不仅提供了统一的数据接口,还能通过扩展实现更高级的功能,从而提高代码的灵活性和复用性。合理地利用`Collection`,可以使代码更加模块化,...

    探索Java集合的宝藏:集合框架的主要接口和类全解析

    这些集合类和接口的设计旨在满足不同的需求,并提供了高效的数据管理和操作手段。Java集合框架主要由四个关键部分组成:接口、实现、算法和辅助类。下面我们将详细探讨这些概念。 #### 主要接口 1. **Collection**...

Global site tag (gtag.js) - Google Analytics