📜  Java-集合框架

📅  最后修改于: 2020-12-21 01:50:22             🧑  作者: Mango


在Java 2之前,Java提供了特殊类,例如Dictionary,Vector,StackProperties,用于存储和操作对象组。尽管这些课程非常有用,但它们缺乏统一的中心主题。因此,使用Vector的方式与使用Properties的方式不同。

收集框架旨在满足多个目标,例如-

  • 该框架必须是高性能的。基本集合(动态数组,链表,树和哈希表)的实现要高效。

  • 该框架必须允许不同类型的集合以相似的方式工作并且具有高度的互操作性。

  • 该框架必须轻松地扩展和/或调整集合。

为此,整个集合框架是围绕一组标准接口设计的。提供了这些接口的几种标准实现,例如LinkedList,HashSetTreeSet ,您可以原样使用它们,也可以实现自己的集合(如果选择)。

集合框架是用于表示和操作集合的统一体系结构。所有集合框架都包含以下内容-

  • 接口-这些是代表集合的抽象数据类型。接口允许独立于其表示的细节来操纵集合。在面向对象的语言中,接口通常形成层次结构。

  • 实现,即类-这些是集合接口的具体实现。本质上,它们是可重用的数据结构。

  • 算法-这些是对实现集合接口的对象执行有用的计算(例如搜索和排序)的方法。据说这些算法是多态的:也就是说,可以在适当的收集接口的许多不同实现中使用相同的方法。

除了集合外,该框架还定义了几个地图接口和类。映射存储键/值对。尽管地图在正确使用该术语时不是集合,但它们与集合完全集成。

收集接口

集合框架定义了几个接口。本节概述每个接口-

Sr.No. Interface & Description
1 The Collection Interface

This enables you to work with groups of objects; it is at the top of the collections hierarchy.

2 The List Interface

This extends Collection and an instance of List stores an ordered collection of elements.

3 The Set

This extends Collection to handle sets, which must contain unique elements.

4 The SortedSet

This extends Set to handle sorted sets.

5 The Map

This maps unique keys to values.

6 The Map.Entry

This describes an element (a key/value pair) in a map. This is an inner class of Map.

7 The SortedMap

This extends Map so that the keys are maintained in an ascending order.

8 The Enumeration

This is legacy interface defines the methods by which you can enumerate (obtain one at a time) the elements in a collection of objects. This legacy interface has been superceded by Iterator.

集合类

Java提供了一组实现Collection接口的标准集合类。一些类提供了可以按原样使用的完整实现,而另一些类则是抽象类,提供了用作创建具体集合的起点的骨架实现。

下表总结了标准收集类-

Sr.No. Class & Description
1

AbstractCollection

Implements most of the Collection interface.

2

AbstractList

Extends AbstractCollection and implements most of the List interface.

3

AbstractSequentialList

Extends AbstractList for use by a collection that uses sequential rather than random access of its elements.

4 LinkedList

Implements a linked list by extending AbstractSequentialList.

5 ArrayList

Implements a dynamic array by extending AbstractList.

6

AbstractSet

Extends AbstractCollection and implements most of the Set interface.

7 HashSet

Extends AbstractSet for use with a hash table.

8 LinkedHashSet

Extends HashSet to allow insertion-order iterations.

9 TreeSet

Implements a set stored in a tree. Extends AbstractSet.

10

AbstractMap

Implements most of the Map interface.

11 HashMap

Extends AbstractMap to use a hash table.

12 TreeMap

Extends AbstractMap to use a tree.

13 WeakHashMap

Extends AbstractMap to use a hash table with weak keys.

14 LinkedHashMap

Extends HashMap to allow insertion-order iterations.

15 IdentityHashMap

Extends AbstractMap and uses reference equality when comparing documents.

AbstractCollection,AbstractSet,AbstractList,AbstractSequentialListAbstractMap类提供了核心集合接口的骨架实现,以最大程度地减少实现它们的工作量。

上一章已经讨论了java.util定义的以下旧类-

Sr.No. Class & Description
1 Vector

This implements a dynamic array. It is similar to ArrayList, but with some differences.

2 Stack

Stack is a subclass of Vector that implements a standard last-in, first-out stack.

3 Dictionary

Dictionary is an abstract class that represents a key/value storage repository and operates much like Map.

4 Hashtable

Hashtable was part of the original java.util and is a concrete implementation of a Dictionary.

5 Properties

Properties is a subclass of Hashtable. It is used to maintain lists of values in which the key is a String and the value is also a String.

6 BitSet

A BitSet class creates a special type of array that holds bit values. This array can increase in size as needed.

收集算法

集合框架定义了几种可应用于集合和地图的算法。这些算法在Collections类中定义为静态方法。

几种方法可能引发ClassCastException (在尝试比较不兼容的类型时发生),或者抛出UnsupportedOperationException (在尝试修改不可修改的集合时发生)。

集合定义了三个静态变量:EMPTY_SET,EMPTY_LIST和EMPTY_MAP。一切都是一成不变的。

Sr.No. Algorithm & Description
1 The Collection Algorithms

Here is a list of all the algorithm implementation.

如何使用迭代器?

通常,您将需要遍历集合中的元素。例如,您可能要显示每个元素。

最简单的方法是使用迭代器,该迭代器是实现Iterator或ListIterator接口的对象。

迭代器使您可以循环浏览集合,获取或删除元素。 ListIterator扩展了Iterator,以允许双向遍历列表和修改元素。

Sr.No. Iterator Method & Description
1 Using Java Iterator

Here is a list of all the methods with examples provided by Iterator and ListIterator interfaces.

如何使用比较器?

TreeSet和TreeMap都按排序顺序存储元素。但是,比较器精确地定义了排序顺序的含义。

该接口使我们可以使用多种不同方式对给定的集合进行排序。同样,此接口可用于对任何类的任何实例进行排序(即使我们不能修改的类)。

Sr.No. Iterator Method & Description
1 Using Java Comparator

Here is a list of all the methods with examples provided by Comparator Interface.

概要

Java集合框架使程序员可以访问预打包的数据结构以及用于操纵它们的算法。

集合是可以保存对其他对象的引用的对象。集合接口声明可以对每种类型的集合执行的操作。

集合框架的类和接口在软件包java.util中。