Collection接口

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

[java] view plaincopy

  1. import java.util.*;
  2. public class TestCollection{
  3. public static void main(String args[]){
  4. String a = "A";
  5. String b = "B";
  6. String c = "C";
  7. Collection<String> list1 = new ArrayList<String>();
  8. list1.add(a);//通过add(E obj)方法添加指定的对象到集合中
  9. list1.add(b);
  10. Collection<String> list2 = new ArrayList<String>();
  11. list2.addAll(list1);//通过addAll(Collection<? extends E> col)方法添加指定集合中的所有对象到该集合中
  12. list2.add(c);
  13. Iterator<String> it = list2.iterator();//通过iterator()方法序列化集合中的所有对象
  14. while(it.hasNext()){
  15. String s = it.next();//因为对实例it进行了泛化,所以不需要进行强制类型转换
  16. System.out.println(s);
  17. }
  18. }
  19. }

程序运行结果如下:
A
B
C
注意:由于Collection是接口,不能直接对其进行实例化,而ArrayList类是Collection接口的间接实现类,因此可以通过ArrayList类实现Collection的实例化。
(2)removeAll(Collection<?> col)方法
removeAll(Collection<>> col)方法用来从该集合中移除同时包含在指定集合中的对象,与retainAll()方法正好相反。返回值为boolean型,如果存在符合移除条件的对象则返回True,否则返回False。
例如:

[java] view plaincopy

  1. String a = "A";
  2. String b = "B";
  3. String c = "C";
  4. Collection<String> list1 = new ArrayList<String>();
  5. list1.add(a);
  6. list1.add(b);
  7. Collection<String> list2 = new ArrayList<String>();
  8. list2.add(b);//注释该行,再运行
  9. list2.add(c);
  10. boolean isContains = list1.removeAll(list2);
  11. System.out.println("是否存在符合移除条件的对象:"+isContains);
  12. Iterator<String> it = list1.iterator();
  13. System.out.println("list1中的对象如下:");
  14. while(it.hasNext()){
  15. String s = it.next();
  16. System.out.println(s);
  17. }

程序运行结果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。
例如:

[java] view plaincopy

  1. String a = "A";
  2. String b = "B";
  3. String c = "C";
  4. Collection<String> list1 = new ArrayList<String>();
  5. list1.add(a);//注释该行,再运行
  6. list1.add(b);
  7. Collection<String> list2 = new ArrayList<String>();
  8. list2.add(b);
  9. list2.add(c);
  10. boolean isContains = list1.retainAll(list2);
  11. System.out.println("是否存在符合移除条件的对象:"+isContains);
  12. Iterator<String> it = list1.iterator();
  13. System.out.println("list1中的对象如下:");
  14. while(it.hasNext()){
  15. String s = it.next();
  16. System.out.println(s);
  17. }

程序运行结果1:(没有注释掉list1.add(a);)
是否存在符合移除条件的对象:true
list1中的对象如下:
B
程序运行结果2:(注释掉了list1.add(a);)
是否存在符合移除条件的对象:false
list1中的对象如下:
B
(4)containsAll(Collection<?> col)方法
containsAll(Collection<?> col)方法用来查看在该集合中是否存在指定集合中的所有对象。返回值为boolean型,如果存在则返回True,否则返回False。
例如:

[java] view plaincopy

  1. String a = "A";
  2. String b = "B";
  3. String c = "C";
  4. Collection<String> list1 = new ArrayList<String>();
  5. list1.add(a);
  6. list1.add(b);
  7. Collection<String> list2 = new ArrayList<String>();
  8. list2.add(b);
  9. list2.add(c);//注释该行,再运行
  10. boolean isContains = list1.containsAll(list2);
  11. 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)方法的实例进行了泛化,还要求入口参数的类型必须符合泛化类型。
例如:

[java] view plaincopy

  1. String a = "A";
  2. String b = "B";
  3. String c = "C";
  4. Collection<String> list1 = new ArrayList<String>();
  5. list1.add(a);
  6. list1.add(b);
  7. list1.add(c);
  8. String s1[] = new String[1];
  9. String s2[] = list1.toArray(s1);
  10. System.out.println("数组s2中的元素如下:");
  11. for(int i=0;i<s2.length;i++){
  12. System.out.println(s2[i]);
  13. }

程序运行结果如下:
数组s2中的元素如下:
A
B
C

Collection接口,布布扣,bubuko.com

时间: 2024-10-26 03:29:52

Collection接口的相关文章

Java中Collection接口的用法

Collection接口是List.Set.Queue接口的父接口Collection接口定义了可用于操作List.Set和Queue的方法--增删改查List接口及其实现类--ArrayListList是元素有序并且可以重复的集合,被称为序列.List可以精确的控制每个元素的插入位置,或删除某个位置元素List有add()插入方法和get()获取方法ArrayList--数组序列,是List的一个重要实现类ArrayList底层是由数组实现的,这也是其名字的由来 List接口 List中的元素

疯狂Java学习笔记(34)----------Iterator、Collection接口以及foreach

Iterator.Collection接口: 如下图:Iterator.Collection同在一个包中: 红字部分使我们经常遇到的,但是遇到又不知道怎么去理解,去应用它! Collection是最基本集合接口,它定义了一组允许重复的对象.Collection接口派生了两个子接口Set和List,分别定义了两种不同的存储方式,如下: 2. Set接口 Set接口继承于Collection接口,它没有提供额外的方法,但实现了Set接口的集合类中的元素是无序且不可重复. 特征:无序且不可重复. 3.

23、Collection接口和List集合

package com.alllist.list; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; public class Muster { /** * ----- Collection 接口 ----- * 1.集合类又被称为容器. * 2.数组的长度是固定的,集合的长度是可变的 * 3.数组和集合的区别: * 3.1.数组用来

Collection接口&amp;List接口简介

Collection接口 是List.Set和Queue接口的父接口 定义了可用于操作List.Set和Queue的方法--增删改查(可以打开JDK的API文档查看这些方法) List接口及其实现类--ArrayList List是元素有序并且可以重复的集合,称为序列 List可以精确的控制每个元素的插入位置和删除某个位置的元素 ArrayList--数组序列,是List的一个重要是实现类(使用最频繁) ArrayList底层是由数组实现的 PS: 可以模拟学生选课来实现ArrayList的功能

java----数据结构与算法----JavaAPI:java.util.Collection接口

Java API--java.util.Collection接口 /** * @author chen * @date 20170317 * @description:本程序讲述Collection接口 * java.util.Collection * 概述:Collection接口是Set和List接口的父接口,Collection接口中定义了一些 * 用于集合元素操作的方法,被其子接口以及子接口的实现类所继承 * 构造函数 * java中接口不能有构造函数 * 成员函数: * [1]概述,由

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

首先我们说说集合有什么作用. 一.集合的作用 1.在类的内部,对数据进行组织: 2.简单而快速的搜索大数量的条目: 3.有的集合接口,提供一系列排列有序的元素,并且可以在序列中间快速的插入或者删除有关元素: 例如:做广播操的时候,可以将学生插入到某排某列,反之也可以叫某排某列中的学生出列. 4.有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型. 例如:在吃饭的时候,众多铝饭盒中如何区别是自己的呢?在饭盒上刻独有的标志或贴纸条,这个标志和

Collection接口和Collections类的简单区别和讲解

这里仅仅进行一些简单的比较,如果你想要更加详细的信息话,请自己百度. 1.Collection: 是集合类的上层接口.本身是一个Interface,里面包含了一些集合的基本操作. Collection接口时Set接口和List接口的父接口 里面的常用操作有如下内容: 2.Collections Collections是一个集合框架的帮助类,里面包含一些对集合的排序,搜索以及序列化的操作. 最根本的是Collections是一个类哦. 下面是Collections类中的常用操作: 好吧,就先到这里

Java集合之Collection接口

java的集合分为三大接口,分别是Collection,Map,Iterator,集合接口和类在java.util包中,此次主要介绍三大接口之一的Collection接口. 一些Collection允许有重复元素,而另一些则不允许,一些Collection是有序的,另一些则是无序的.Collection不提供接口的任何直接实现,它提供更加具体的子接口List和Set. 1.List接口 List是有序的集合,此接口的用户队列表的每一个元素的插入位置进行精确的控制,可以根据元素的整数索引访问元素,

Collection接口 Collection的通用方法 foreach Iterator 迭代器

Collection接口 单列集合的接口list 有索引 有序set 无索引 无序AbstractCollection是实现了Collection接口的抽象父类Collection<> c = new ArrayList<>();多态 只可以用父类的方法,不可以用子类特有的方法 Collection的通用方法增 add()删 remove()清空集合 clear()判断元素是否为空 isEmpty判断元素是否存在 contains()集合的长度 size() 增强for forea