`

10、java.util.Collection集合类

阅读更多

一、为什么出现集合类?

 

    面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式

 

二、数组和集合类同是容器,有何不同?

 

  1. 数组虽然可以存储对象,但长度是固定的
  2. 集合长度是可变的
  3. 数组中可以存储基本数据类型和对象
  4. 集合只能存储对象

三、集合类的特点

 

    集合只用于存储对象,长度是可变的,可以存储不同类型的对象

 

四、集合框架的构成及分类

 

 

为什么会出现这么多的容器呢?

    因为每一个容器对数据的存储方式都有不同,存储方式即数据结构

 

五、Collection类

 

/*
 *java.util 接口 Collection<E>
 *
 *Collection 层次结构 中的根接口。
 *Collection 表示一组对象,这些对象也称为 collection 的元素。
 *一些 collection 允许有重复的元素,而另一些则不允许。
 *一些 collection 是有序的,而另一些则是无序的。
 */
public interface Collection<E>extends Iterable<E>
{
	//1,添加元素,添加成功返回true,如果此 collection 不允许有重复元素,并且已经包含了指定的元素,则返回 false
	boolean add(E e);

	//2,将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
	boolean addAll(Collection<? extends E> c);

	//3,移除此 collection 中的所有元素(可选操作)
	void clear();

	//4,从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
	boolean remove(Object o);

	//5,移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作),即去交集
	boolean removeAll(Collection<?> c);

	//6,仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。即求交集
	boolean retainAll(Collection<?> c);

	//7,如果此 collection 包含指定的元素,则返回 true
	boolean contains(Object o);

	//8,如果此 collection 包含指定 collection 中的所有元素,则返回 true
	boolean containsAll(Collection<?> c);

	//9,如果此 collection 不包含元素,则返回 true。
	boolean isEmpty();

	//10,比较此 collection 与指定对象是否相等。
	boolean equals(Object o);

	//11,返回此 collection 的哈希码值
	int hashCode();

	//12,返回此 collection 中的元素数
	int size();

	//13,返回在此 collection 的元素上进行迭代的迭代器。
	Iterator<E> iterator();

	//14,返回包含此 collection 中所有元素的数组。
	Object[] toArray();

	/*15,返回包含此 collection 中所有元素的数组;
		返回数组的运行时类型与指定数组的运行时类型相同。
		如果指定的数组能容纳该 collection,则返回包含此 collection 元素的数组。
		否则,将分配一个具有指定数组的运行时类型和此 collection 大小的新数组。
		如果指定的数组能容纳 collection,并有剩余空间(即数组的元素比 collection 的元素多),
		那么会将数组中紧接 collection 尾部的元素设置为 null */
	<T> T[] toArray(T[] a);
}
  • add方法的参数类型是Object,以便于接收任意类型对象
  • 集合中存储的都是对象的引用(地址)
六、迭代器Iterator
  • 每一个集合都有自己的数据结构,都有特定的取出自己内部元素的方式。
  • 为了便于操作所有的容器,取出元素。
  • 将容器内部的取出方式按照一个统一的规则向外提供,这个规则就是Iterator接口。
  • 也就说,只要通过该接口就可以取出Collection集合中的元素,
  • 至于每一个具体的容器依据自己的数据结构,如何实现的具体取出细节,这个不用关心,
  • 这样就降低了取出元素和具体集合的耦合性。
/**
 *java.util.Iterator接口
 *对 collection 进行迭代的迭代器。
 *迭代器取代了 Java Collections Framework 中的 Enumeration。
 */
public interface Iterator<E> 
{
	//如果仍有元素可以迭代,则返回 true。
	boolean hasNext();

	//返回迭代的下一个元素。
	E next();

	//从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
	void remove();
}

 

package java.lang;

import java.util.Iterator;

/**  
 *  实现这个接口允许对象成为 "foreach" 语句的目标。
 *  从JDK1.5开始才有的
 */
public interface Iterable<T> {

    /**
     * 返回一个在一组 T 类型的元素上进行迭代的迭代器。
     */
    Iterator<T> iterator();
}
 

 

七、Collection体系
 
Collection
|--:List元素是有序的,元素可以重复,因为该集合体系有索引
    |--:ArrayList:底层的数据结构使用的是数组结构,特点:查询速度很快,但是增删稍慢,线程不同步
    |--:LinkedList:底层使用的是链表数据结构,特点:增删速度很快,查询稍慢
    |--:Vector:底层是数组数据结构,线程同步,被ArrayList替代了
|--:Set  元素是无序的,元素不可以重复
 
八、AbstractCollection
public abstract class AbstractCollection<E>extends Objectimplements Collection<E>{}
 此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作。
 实现代码,多数是利用Iterator来实现的
public abstract class AbstractList<E>extends AbstractCollection<E>implements List<E>{}
 此类提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数据存储(如数组)支持的该接口所需的工作。
public abstract class AbstractSet<E>extends AbstractCollection<E>implements Set<E>
 此类提供 Set 接口的骨干实现,从而最大限度地减少了实现此接口所需的工作
。。。。。。。。。。。。。
  • 大小: 4.4 KB
分享到:
评论

相关推荐

    Java.util.Collection类的学习.pdf

    Java.util.Collection类是Java编程语言中的一个基础类库,提供了许多有用的方法来操作集合对象。Collection类包含了许多静态方法,可以对集合进行排序、混排、反转、替换等操作。 1. Overview Java.util....

    java.util包总结

    首先,Java.util包中最显著的变化是引入了类集(Collection)框架。类集框架是Java 2的一大亮点,它标准化了处理对象集合的方式,解决了早期Java中如Dictionary、Vector、Stack和Properties等类各自为政的问题。...

    Java.util包.docx

    Java.util包是Java标准库中的核心包之一,包含了许多用于处理集合、数组、日期时间、随机数等的类。在本文件中,我们主要关注Java.util.ArrayList类,这是一个常用的动态数组实现,它提供了灵活的大小调整和高效的...

    Java.util随记.doc

    Java.util包是Java标准库中的核心包之一,它包含了大量用于处理各种数据结构和集合的类和接口。在这个包中,我们经常会用到`Iterator`和`List`接口,这两个接口在Java编程中扮演着非常重要的角色。 首先,`Iterator...

    java.util.List接口的类及用法

    Java中的`java.util.List`接口是集合框架的重要组成部分,它扩展了`Collection`接口,并引入了一些特定于列表的特性,如有序性、可重复性以及对元素的索引访问。这篇博客将深入探讨`List`接口及其常用实现类,如`...

    JBuider第七章:Java.util包.rar

    迭代器是访问集合元素的主要方式,Java.util包中的Collection接口都提供了iterator()方法。泛型是Java 5引入的特性,增强了类型安全,允许在编译时检查类型,避免了强制类型转换。 4. **日期和时间处理**: Date...

    java的.awt包和java.util包的区别

    - **Collection**:这是一个接口,所有集合类的根接口。 - **List**:继承自Collection,用于存储有序的元素序列。 - **Set**:同样继承自Collection,用于存储唯一的元素集合。 - **Map**:一个键值对映射的...

    java-util-iterator.pdf java-util-iterator.pdf

    根据提供的文件信息,本文将深入探讨Java中的`java.util.Iterator`接口及其在集合类中的应用。我们将从以下几个方面进行详细解析: ### 一、集合类的根接口:Collection `Collection`接口是Java集合框架的基础,它...

    java.util 包 是Java中很大的一个集合

    运用下列类进行JAVA编程: Date Calendar Random 使用 Collection 接口及其实现类 ArrayList LinkedList 使用 HashMap 使用Vector 等方法的使用

    java.util.Collection源码分析与深度理解

    Java.util.Collection是Java集合框架中的核心接口,它是所有单值集合的父接口,定义了集合的基本操作,如添加元素、删除元素、遍历元素等。Collection接口继承了Iterable接口,这意味着可以通过for-each循环来遍历...

    Java语言的Util类详细介绍

    Java语言的Util类详细介绍 Java语言的Util类是Java开发中非常重要的一部分,它提供了一系列的类来实现基本的数据结构,如线性表、链表等。这些类均在java.util包中。 Collection接口是Java中最基本的集合接口,一...

    最最常用的 100 个 Java类分享

    15. `java.util.Collection`:Collection是最基本的集合接口,它是所有集合类型的父接口。 16. `java.net.URL`:URL类代表统一资源定位符,用于标识网络上的资源。 17. `java.io.FileInputStream`:...

    第13讲 JAVA集合类.ppt

    Java集合类是Java编程语言中用于存储和管理对象的关键组件,它们构成了Java Collections Framework的核心。这个框架提供了一组高效、灵活的数据结构,使得开发者能够轻松地处理数据集合,而无需关心底层实现的复杂性...

    java的1000个常用类

    9. `java.util.Collections`(2028次):Collections是集合类的工具类,提供了对集合进行操作的各种方法,如排序、翻转和查找。 10. `java.util.Set`(2019次):Set接口表示不允许重复元素的集合。 11. `java....

    java.util源码-JavaUtility-SourceCode:JavaUtility-SourceCode

    `java.util`包包括集合框架、日期时间API、事件模型、散列映射、队列、栈、优先队列、随机数生成器以及各种实用工具类。 1. 集合框架:Java集合框架是`java.util`包的核心,它提供了一组接口和类来存储和操作对象。...

    JAVA_API1.6文档(中文)

    java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...

    Java基础知识-day02【Collection、泛型】.pdf

    Collection 是单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是 java.util.List 和 java.util.Set。其中,List 的特点是元素有序、元素可重复。Set 的特点是元素无序,而且不可...

Global site tag (gtag.js) - Google Analytics