集合

java xpath 语法 java extract_重复元素


集合接口和迭代器接口

1.迭代器

iterator方法用于返回一个实现了Iterator接口的对象。

  • Iterator包含3个方法:
public interface Iterator<E>
{
    E next();
    boolean hasNext();
    void remove();
}
  • 通过反复调用next方法,可以逐个访问集合中的每个元素。但是到了集合的末尾,next方法将抛出一个NoSuchElementException。因此需要在调用next之前调用hasNext方法。例如:
while(iter.hasNext())
{
    String element = iter.next();
    do something with element
}

或者用“for each”循环

for (String element : c)
{
    do something with elemrnt
}

2.删除元素

Iterator接口的remove方法将会删除上次调用next方法时返回的元素。p564


具体的集合

集合类型

描述

ArrayList

一种可以动态增长和缩减的索引序列

LinkedList

一种可以在任何位置进行高效地插入和删除操作的有效序列

ArrayDeque

一种可以用循环数组实现的双端序列

HashSet

一种没有重复元素的无序集合

TreeSet

一种有序集

HashMap

一种存储键/值关联的数据结构

TreeMap

一种键值有序排列的映射表

EnumMap

一种键值属于枚举类型的映射表

散列集

  • 散列码是由对象的实例域产生的一个整数
  • java里,散列表用链表数组实现。每个列表称为桶bucket。
  • 其中set类型是没有重复元素的的元素集合
  • contains方法用来快速地查看是否某个元素已经出现在集中。只在某个桶中查找元素,而不必查看集合中的所有元素。

树集TreeSet

  • 树集是一个有序集合,可以按照任意顺序将元素插入到集合中,在遍历时,每个值将自动地按照排序后的顺序呈现。
  • 排序是用树结构完成的(p579例子中使用的是red-balck tree红黑树

对象的比较

默认情况下树集假定插入的元素实现了Compareable接口,如果a与b相等,调用a.compareTo(b)一定返回0,若排序后a位于b之前,则返回负值,若果a在b之后,则返回正值


Maps映射表

  • 映射表用来存放键/值对
  • 散列映射只对键进行散列,树映射表用键的整体顺序对元素进行排序,并将其组织成搜索树。
  • 如果在映射表中没有与给定键对应的信息,get将返回null。
  • remove方法用于从映射表中删除给定键对应的元素。size方法用于返回映射表中的元素数。
  • 键必须是唯一的。不能对同一个键存放两个值。