集合接口实现

Set是 Collection不能包含重复元素的。它模拟了数学集抽象。该Set接口包含从中继承的方法,Collection并添加禁止重复元素的限制。Set还增加了关于equalshashCode操作行为的更强的契约,允许Set实例进行有意义的比较,即使它们的实现类型不同。Set如果它们包含相同的元素,则两个实例相等。

Java平台包含三个通用Set实现:HashSetTreeSet,和LinkedHashSet。 HashSet,将其元素存储在哈希表中,是性能最佳的实现; 但是它不能保证迭代的顺序。 TreeSet,将其元素存储在红黑树中,根据其值对其元素进行排序; 它比...慢得多HashSet。 LinkedHashSet实现为具有贯穿其的链表的哈希表,根据它们插入集合(插入顺序)的顺序对其元素进行排序。LinkedHashSet使客户免受未指明的,通常混乱的订单的影响HashSet,其成本仅略高一些.

size操作返回Set基数)中的元素数。该isEmpty方法完全符合您的想法。该add方法将指定的元素添加到Setif尚未存在的元素中,并返回一个布尔值,指示是否添加了元素。类似地,该remove方法从Setif存在时删除指定的元素,并返回一个布尔值,指示元素是否存在。该iterator方法返回一个Iterator通过Set

请注意,代码始终引用Collection其接口类型(Set)而不是其实现类型。这是一个强烈推荐的编程实践,因为它使您可以灵活地仅通过更改构造函数来更改实现。如果用于存储集合的变量或用于传递它的参数被声明为Collection实现类型而不是其接口类型,则必须更改所有此类变量和参数以更改其实现类型。

此外,无法保证生成的程序能够正常运行。如果程序使用原始实现类型中存在但未在新实现类型中存在的任何非标准操作,则程序将失败。仅通过其界面引用集合可防止您使用任何非标准操作。

Set前面例子中的实现类型是HashSet,它不保证元素的顺序Set。如果您希望程序按字母顺序打印单词列表,只需将Set实现类型更改HashSetTreeSet。进行这种简单的单行更改会导致前一个示例中的命令行生成以下输出。

List是有序的 Collection(有时称为序列)。列表可能包含重复元素。除了继承的操作外Collection,该List接口还包括以下操作:

  • Positional access - 根据列表中的数字位置操纵元素。这包括方法,例如get, setaddaddAll,和remove
  • Search - 搜索列表中的指定对象并返回其数字位置。搜索方法包括 indexOflastIndexOf
  • Iteration- 扩展Iterator语义以利用列表的顺序性。这些 listIterator方法提供了这种行为。
  • Range-view- 该sublist方法对列表执行任意范围操作

Java平台包含两个通用List实现。 ArrayList,这通常是性能更好的实现,并且 LinkedList在某些情况下可以提供更好的性能。

猜你喜欢

转载自blog.csdn.net/xiamaocheng/article/details/82288343