鸿蒙OS开发文档 第50页

鸿蒙OS SortedSet

SortedSet public interface SortedSet<E> extends Set<E> 进一步提供对其元素的总排序的 Set。 元素使用它们的 Comparable 排序,或者由通常在排序集创建时提供的 Comparator 排序。 集合的迭代器将按元素升序遍历集合。 提供了几个额外的操作来利用排序。 (这个接口是 SortedMap 的集合类似物。) 插入有序集合的所有元素都必须实现 Comparable 接口(或被指定的比较器接受)。 此外,所有此类元素必须相互比较:e1.compareTo(e2)(或comparator.compare(e1, e2))不得为排序集中的任何元素e1 和e2 抛出ClassCastException。 尝试违反此限制将导致有问题的方法或构造函数调用抛出 ClassCastException。 请注意,如果有序集合要正确实现 Set 接口,则由有序集合维护的排序(无论是否提供显式比较器)必须与 equals 一致。这是因为 Set 接口是根据等于操作定义的,但排序集使用其 compareTo(或比较)方法执行所有元素比较 ,因此从排序集的角度来看,此方法认为相等的两个元素是相等的。 一个有序集合的行为是明确定义的,即使它的排序与equals不一致; 它只是不遵守 Set 接口的一般约定。 所有通用排序集实现类都应提供四个“标准”构造函数: 1) 一个 void(无参数)构造函数,它创建一个空排序集,根据其元素的自然顺序排序。 2) 具有 Comparator 类型的单个参数的构造函数,它创建一个空的排序集,根据指定的比较器排序。 3) 一个具有单个 Collection 类型参数的构造函数,它创建一个新的排序集,其元素与其参数相同,并根据元素的自然顺序进行排序。 4) 具有类型为 SortedSet 的单个参数的构造函数,它创建一个具有与输入排序集相同元素和相同顺序的新排序集。 无法强制执行此建议,因为接口不能包含构造函数。 注意:一些方法返回具有受限范围的子集。 这样的范围是半开的,也就是说,它们包括它们的低端点但不包括它们的高端点(如果适用)。 如果您需要一个封闭范围(包括两个端点),并且元素类型允许计算给定值的后继值,则只需请求从 lowEndpoint 到后继值(highEndpoint)的子范围。 例如,假设 s 是一组已排序的字符串。 下面的成语获得了一个视图,该视图包含 s 中从低到高的所有字符串,包括: SortedSet<String> sub = s.subSet(low, high+"\0"); 类似的技术可用于生成开放范围(不包含端点)。 下面的语句获得了一个视图,该视图包含了 s 中从低到高的所有字符串,排他性的: SortedSet<String> sub = s.subSet(low+"\0", high); 此接口是 Java 集合框架的成员。 方法总结 修饰符和类型 方法 描述 Comparator<? super E> comparator() 返回用于对该 set 中的元素进行排序的比较器,如果此 set 使用其元素的 Comparable,则返回 null。 E first() 返回此集合中当前的第一个(最低)元素。 SortedSetE headSet(E toElement) 返回此集合中元素严格小于 toElement 的部分的视图。 E last() 返回此集合中当前的最后一个(最高)元素。 default SpliteratorE spliterator() 在此排序集中的元素上创建一个 Spliterator。 SortedSetE subSet(E fromElement, E toElement) 返回此集合部分的视图,其元素范围从 fromElement(包括)到 toElement(不包括)。 SortedSetE tailSet(E fromElement) 返回此集合中元素大于或等于 fromElement 的部分的视图。 从接口 java.util.Collection 继承的方法 parallelStream, removeIf, stream 从接口 java.lang.Iterable 继承的方法 forEach 从接口 java.util.Set...

鸿蒙OS SortedMap

SortedMap public interface SortedMap<K,V> extends Map<K,V> 进一步提供对其键的总排序的 Map。 映射根据其键的 Comparable 或通常在排序映射创建时提供的 Comparator 进行排序。 此顺序在遍历已排序地图的集合视图(由 entrySet、keySet 和 values 方法返回)时反映出来。 提供了几个额外的操作来利用排序。 (此接口是 SortedSet 的映射类似物。) 插入排序映射的所有键都必须实现 Comparable 接口(或被指定的比较器接受)。 此外,所有这些键必须是相互可比较的:k1.compareTo(k2)(或comparator.compare(k1, k2))不得为排序映射中的任何键k1 和k2 抛出ClassCastException。 尝试违反此限制将导致有问题的方法或构造函数调用抛出 ClassCastException。 请注意,如果有序映射要正确实现 Map 接口,则有序映射维护的排序(无论是否提供显式比较器)必须与 equals 一致。 (参见 Comparable 接口或 Comparator 接口,了解与 equals 一致的精确定义。)这是因为 Map 接口是根据 equals 操作定义的,但排序后的映射使用其 compareTo(或 compare)方法执行所有键比较 ,因此从排序映射的角度来看,此方法认为相等的两个键是相等的。 树形图的行为是明确定义的,即使它的排序与等号不一致; 它只是不遵守 Map 接口的一般合同。 所有通用的排序地图实现类都应该提供四个“标准”构造函数。 尽管无法通过接口指定所需的构造函数,但无法强制执行此建议。 所有排序地图实现的预期“标准”构造函数是: 一个 void(无参数)构造函数,它创建一个空的排序映射,根据其键的自然顺序排序。 具有 Comparator 类型的单个参数的构造函数,它创建根据指定比较器排序的空排序映射。 具有 Map 类型的单个参数的构造函数,它创建一个具有与其参数相同的键值映射的新映射,并根据键的自然顺序进行排序。 带有一个 SortedMap 类型参数的构造函数,它创建一个新的有序映射,它具有与输入有序映射相同的键值映射和相同的顺序。 注意:一些方法返回具有受限键范围的子图。 这样的范围是半开的,也就是说,它们包括它们的低端点但不包括它们的高端点(如果适用)。 如果您需要一个封闭范围(包括两个端点),并且密钥类型允许计算给定密钥的后继者,则只需请求从 lowEndpoint 到后继者(highEndpoint)的子范围。 例如,假设 m 是一个键是字符串的映射。 以下习惯用法获取包含 m 中所有键值映射的视图,其键介于低和高之间,包括: SortedMap<String, V> sub = m.subMap(low, high+"\0"); 类似的技术可用于生成开放范围(不包含端点)。 以下成语获取一个视图,其中包含 m 中的所有键值映射,其键在低和高之间,互斥: SortedMap<String, V> sub = m.subMap(low+"\0", high); 此接口是 Java 集合框架的成员。 嵌套类摘要 从接口 java.util.Map 继承的嵌套类/接口 Map.EntryK,V 方法总结 修饰符和类型 方法 描述 Comparator<? super K> comparator() 返回用于对该映射中的键进行排序的比较器,如果此映射使用其键的 Comparable,则返回 null。 Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射的 Set 视图。 K firstKey() 返回此映射中当前的第一个(最低)键。 SortedMapK,V headMap(K toKey) 返回此映射部分的视图,其键严格小于 toKey。 SetK...

鸿蒙OS Set

Set public interface Set<E> extends Collection<E> 不包含重复元素的集合。 更正式地说,集合不包含一对元素 e1 和 e2 使得 e1.equals(e2),并且最多包含一个空元素。 正如它的名字所暗示的,这个接口模拟了数学集合抽象。 除了从 Collection 接口继承的那些之外,Set 接口对所有构造函数的合约以及 add、equals 和 hashCode 方法的合约进行了额外的规定。 为方便起见,此处还包括其他继承方法的声明。 (这些声明随附的规范已针对 Set 接口进行了定制,但它们不包含任何附加规定。) 毫不奇怪,对构造函数的附加规定是,所有构造函数都必须创建一个不包含重复元素的集合(如上所述)。 注意:如果将可变对象用作集合元素,则必须非常小心。如果对象的值以影响等于比较的方式更改,而对象是集合中的一个元素,则不指定集合的行为。此禁令的一个特殊情况是不允许集合包含自身作为元素。 一些集合实现对它们可能包含的元素有限制。例如,一些实现禁止空元素,而一些实现对其元素的类型有限制。尝试添加不合格的元素会引发未经检查的异常,通常是 NullPointerException 或 ClassCastException。尝试查询不合格元素的存在可能会引发异常,或者它可能只是返回 false;一些实现会表现出前一种行为,而另一些会表现出后者。更一般地,尝试对不合格元素执行操作,该不合格元素的完成不会导致将不合格元素插入集合中,这可能会引发异常,也可能会成功,这取决于实现的选择。此类异常在此接口的规范中被标记为“可选”。 此接口是 Java 集合框架的成员。 方法总结 修饰符和类型 方法 描述 boolean add(E e) 如果指定元素尚不存在,则将其添加到此集合中(可选操作)。 boolean addAll(Collection<? extends E> c) 如果指定集合中的所有元素尚不存在,则将它们添加到此集合中(可选操作)。 void clear() 从此集合中移除所有元素(可选操作)。 boolean contains(Object o) 如果此集合包含指定的元素,则返回 true。 boolean containsAll(Collection<?> c) 如果此集合包含指定集合的所有元素,则返回 true。 boolean equals(Object o) 比较指定对象与此集合是否相等。 int hashCode() 返回此集合的哈希码值。 boolean isEmpty() 如果此集合不包含任何元素,则返回 true。 IteratorE iterator() 返回此集合中元素的迭代器。 boolean remove(Object o) 如果存在,则从此集合中删除指定的元素(可选操作)。 boolean removeAll(Collection<?> c) 从此集合中删除指定集合中包含的所有元素(可选操作)。 boolean retainAll(Collection<?> c) 仅保留此集合中包含在指定集合中的元素(可选操作)。 int size() 返回此集合中的元素数(其基数)。 default SpliteratorE spliterator() 在此集合中的元素上创建一个 Spliterator。 Object[] toArray() 返回一个包含此集合中所有元素的数组。 <T> T[] toArray(T[] a) 返回一个包含该集合中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 从接口 java.util.Collection 继承的方法 parallelStream, removeIf, stream 从接口 java.lang.Iterable 继承的方法 forEach 方法详情 size int size() 返回此集合中的元素数(其基数)。 如果此集合包含多个 Integer.MAX_VALUE 元素,则返回 Integer.MAX_VALUE。 指定者: 接口 CollectionE 中的大小 返回: 该集合中的元素数量(其基数) isEmpty boolean isEmpty() 如果此集合不包含任何元素,则返回 true。 指定者: 接口 CollectionE 中的...

鸿蒙OS RandomAccess

RandomAccess public interface RandomAccess List 实现使用的标记接口表明它们支持快速(通常是恒定时间)随机访问。此接口的主要目的是允许通用算法在应用于随机或顺序访问列表时改变其行为以提供良好的性能。 用于操作随机访问列表(例如 ArrayList)的最佳算法在应用于顺序访问列表(例如 LinkedList)时会产生二次行为。鼓励通用列表算法在应用算法之前检查给定列表是否是此接口的实例,如果将其应用于顺序访问列表会提供较差的性能,并在必要时更改它们的行为以保证可接受的性能。 众所周知,随机访问和顺序访问之间的区别通常是模糊的。例如,如果某些 List 实现变得很大,则提供渐近线性访问时间,但在实践中访问时间是恒定的。这样的 List 实现一般应该实现这个接口。根据经验,如果对于类的典型实例,如果出现以下循环,则 List 实现应该实现此接口: for (int i=0, n=list.size(); i < n; i++) list.get(i); 运行速度比这个循环快: for (Iterator i=list.iterator(); i.hasNext(); ) i.next(); 此接口是 Java 集合框架的成员。

鸿蒙OS Queue

Queue public interface Queue<E> extends Collection<E> 设计用于在处理之前保存元素的集合。 除了基本的 Collection 操作之外,队列还提供了额外的插入、提取和检查操作。 这些方法中的每一种都以两种形式存在:一种在操作失败时抛出异常,另一种返回一个特殊值(null 或 false,取决于操作)。 后一种形式的插入操作是专门为与容量受限的队列实现一起使用而设计的; 在大多数实现中,插入操作不会失败。 队列通常但不一定以 FIFO(先进先出)方式对元素进行排序。 例外情况包括优先级队列,它根据提供的比较器或元素的自然顺序对元素进行排序,以及对元素进行排序的 LIFO 队列(或堆栈) LIFO(后进先出)。 无论使用何种排序,队列的头部都是将通过调用 remove() 或 poll() 删除的元素。 在 FIFO 队列中,所有新元素都插入到队列的尾部。 其他类型的队列可能使用不同的放置规则。 每个 Queue 实现都必须指定其排序属性。 如果可能,offer 方法插入一个元素,否则返回 false。 这与 Collection.add 方法不同,后者只能通过抛出未经检查的异常才能添加元素。 offer 方法设计用于当故障是正常而不是异常发生时使用,例如,在固定容量(或“有界”)队列中。 remove() 和 poll() 方法删除并返回队列的头部。 确切地从队列中删除哪个元素是队列排序策略的函数,该策略因实现而异。 remove() 和 poll() 方法仅在队列为空时的行为不同:remove() 方法抛出异常,而 poll() 方法返回 null。 element() 和 peek() 方法返回但不删除队列的头部。 Queue 接口没有定义并发编程中常见的阻塞队列方法。 这些等待元素出现或空间可用的方法在 BlockingQueue 接口中定义,该接口扩展了该接口。 队列实现通常不允许插入 null 元素,尽管某些实现,例如 LinkedList,不禁止插入 null。 即使在允许的实现中,也不应该将 null 插入到队列中,因为 null 也被 poll 方法用作特殊返回值,以指示队列不包含任何元素。 队列实现通常不定义方法 equals 和 hashCode 的基于元素的版本,而是从类 Object 继承基于标识的版本,因为对于具有相同元素但具有不同排序属性的队列,基于元素的相等性并不总是很好地定义。 此接口是 Java 集合框架的成员。 方法总结 修饰符和类型 方法 描述 boolean add(E e) 如果可以在不违反容量限制的情况下立即将指定元素插入此队列,则在成功时返回 true,如果当前没有可用空间则抛出 IllegalStateException。 E element() 检索但不删除此队列的头部。 boolean offer(E e) 如果可以在不违反容量限制的情况下立即插入,则将指定元素插入此队列。 E peek() 检索但不删除此队列的头部,如果此队列为空,则返回 null。 E poll() 检索并删除此队列的头部,如果此队列为空,则返回 null。 E remove() 检索并删除此队列的头部。 从接口 java.util.Collection 继承的方法 addAll, clear, contains, containsAll, equals, hashCode, isEmpty, iterator, parallelStream, remove, removeAll, removeIf, retainAll, size, spliterator, stream, toArray, toArray 从接口 java.lang.Iterable 继承的方法 forEach 方法详情 add boolean add(E e)...

鸿蒙OS PrimitiveIterator.OfLong

PrimitiveIterator.OfLong public static interface PrimitiveIterator.OfLong extends PrimitiveIterator<Long,LongConsumer> 专门用于长值的迭代器。 嵌套类摘要 从接口 java.util.PrimitiveIterator 继承的嵌套类/接口 PrimitiveIterator.OfDouble, PrimitiveIterator.OfInt, PrimitiveIterator.OfLong 方法总结 修饰符和类型 方法 描述 default void forEachRemaining(Consumer<? super Long> action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 default void forEachRemaining(LongConsumer action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 default Long next() 返回迭代中的下一个元素。 long nextLong() 返回迭代中的下一个long元素。 从接口 java.util.Iterator 继承的方法 hasNext, remove 方法详情 nextLong long nextLong() 返回迭代中的下一个long元素。 返回: 迭代中的下一个long元素 Throws: Throw名称 Throw描述 NoSuchElementException 如果迭代没有更多元素 forEachRemaining default void forEachRemaining(LongConsumer action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 如果指定了迭代顺序,则按迭代顺序执行操作。 操作引发的异常将转发给调用者。 指定者: 接口 PrimitiveIteratorLong,LongConsumer 中的 forEachRemaining 参数: 参数名称 参数描述 action 为每个元素执行的操作 Throws: Throw名称 Throw描述 NullPointerException 如果指定的操作为空 next default Long next() 返回迭代中的下一个元素。 指定者: 接口 IteratorLong 中的下一个 返回: 迭代中的下一个元素 forEachRemaining default void forEachRemaining(Consumer<? super Long> action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 如果指定了迭代顺序,则按迭代顺序执行操作。 操作引发的异常将转发给调用者。 指定者: 接口 IteratorLong 中的 forEachRemaining 参数: 参数名称 参数描述 action 为每个元素执行的操作

鸿蒙OS PrimitiveIterator.OfInt

PrimitiveIterator.OfInt public static interface PrimitiveIterator.OfInt extends PrimitiveIterator<Integer,IntConsumer> 一个专门用于 int 值的迭代器。 嵌套类摘要 从接口 java.util.PrimitiveIterator 继承的嵌套类/接口 PrimitiveIterator.OfDouble, PrimitiveIterator.OfInt, PrimitiveIterator.OfLong 方法总结 修饰符和类型 方法 描述 default void forEachRemaining(Consumer<? super Integer> action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 default void forEachRemaining(IntConsumer action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 default Integer next() 返回迭代中的下一个元素。 int nextInt() 返回迭代中的下一个 int 元素。 从接口 java.util.Iterator 继承的方法 hasNext, remove 方法详情 nextInt int nextInt() 返回迭代中的下一个 int 元素。 返回: 迭代中的下一个 int 元素 Throws: Throw名称 Throw描述 NoSuchElementException 如果迭代没有更多元素 forEachRemaining default void forEachRemaining(IntConsumer action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 如果指定了迭代顺序,则按迭代顺序执行操作。 操作引发的异常将转发给调用者。 指定者: 接口 PrimitiveIteratorInteger,IntConsumer 中的 forEachRemaining 参数: 参数名称 参数描述 action 为每个元素执行的操作 Throws: Throw名称 Throw描述 NullPointerException 如果指定的操作为空 next default Integer next() 返回迭代中的下一个元素。 指定者: 接口 IteratorInteger 中的下一个 返回: 迭代中的下一个元素 forEachRemaining default void forEachRemaining(Consumer<? super Integer> action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 如果指定了迭代顺序,则按迭代顺序执行操作。 操作引发的异常将转发给调用者。 指定者: 接口 IteratorInteger 中的 forEachRemaining 参数: 参数名称 参数描述 action 为每个元素执行的操作

鸿蒙OS PrimitiveIterator.OfDouble

PrimitiveIterator.OfDouble public static interface PrimitiveIterator.OfDouble extends PrimitiveIterator<Double,DoubleConsumer> 专门用于双精度值的迭代器。 嵌套类摘要 从接口 java.util.PrimitiveIterator 继承的嵌套类/接口 PrimitiveIterator.OfDouble, PrimitiveIterator.OfInt, PrimitiveIterator.OfLong 方法总结 修饰符和类型 方法 描述 default void forEachRemaining(Consumer<? super Double> action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 default void forEachRemaining(DoubleConsumer action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 default Double next() 返回迭代中的下一个元素。 double nextDouble() 返回迭代中的下一个双精度元素。 从接口 java.util.Iterator 继承的方法 hasNext, remove 方法详情 nextDouble double nextDouble() 返回迭代中的下一个双精度元素。 返回: 迭代中的下一个双元素 Throws: Throw名称 Throw描述 NoSuchElementException 如果迭代没有更多元素 forEachRemaining default void forEachRemaining(DoubleConsumer action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 如果指定了迭代顺序,则按迭代顺序执行操作。 操作引发的异常将转发给调用者。 指定者: 接口 PrimitiveIteratorDouble,DoubleConsumer 中的 forEachRemaining 参数: 参数名称 参数描述 action 为每个元素执行的操作 Throws: Throw名称 Throw描述 NullPointerException 如果指定的操作为空 next default Double next() 返回迭代中的下一个元素。 指定者: 接口 IteratorDouble 中的下一个 返回: 迭代中的下一个元素 forEachRemaining default void forEachRemaining(Consumer<? super Double> action) 对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。 如果指定了迭代顺序,则按迭代顺序执行操作。 操作引发的异常将转发给调用者。 指定者: 接口 IteratorDouble 中的 forEachRemaining 参数: 参数名称 参数描述 action 为每个元素执行的操作

鸿蒙OS PrimitiveIterator

PrimitiveIterator public interface PrimitiveIterator<T,T_CONS> extends Iterator<T> Iterator 的原始特化的基本类型。 为 OfInt、OfLong 和 OfDouble 值提供了专门的子类型。 Iterator#next 和 Iterator#forEachRemaining(java.util.function.Consumer) 的专用子类型默认实现将原始值框到其相应包装类的实例。 这种装箱可能会抵消使用原始专业化时获得的任何优势。 为避免装箱,应使用相应的基于基元的方法。 例如,应该优先使用 PrimitiveIterator.OfInt#nextInt() 和 PrimitiveIterator.OfInt#forEachRemaining(java.util.function.IntConsumer),而不是 PrimitiveIterator.OfInt#next() 和 PrimitiveIterator.OfInt#forEachRemaining(java.util.function 。消费者)。 使用基于装箱的方法 Iterator#next 和 Iterator#forEachRemaining(java.util.function.Consumer) 迭代原始值不会影响转换为装箱值的值的顺序。 嵌套类摘要 修饰符和类型 接口 描述 static interface PrimitiveIterator.OfDouble 专门用于双精度值的迭代器。 static interface PrimitiveIterator.OfInt 一个专门用于 int 值的迭代器。 static interface PrimitiveIterator.OfLong 专门用于长值的迭代器。 方法总结 修饰符和类型 方法 描述 void forEachRemaining(T_CONS action) 对每个剩余元素执行给定的操作,按照迭代时元素发生的顺序,直到所有元素都已处理或该操作引发异常。 从接口 java.util.Iterator 继承的方法 forEachRemaining, hasNext, next, remove 方法详情 forEachRemaining void forEachRemaining(T_CONS action) 对每个剩余元素执行给定的操作,按照迭代时元素发生的顺序,直到所有元素都已处理或该操作引发异常。 操作引发的错误或运行时异常将转发给调用者。 参数: 参数名称 参数描述 action 为每个元素执行的操作 Throws: Throw名称 Throw描述 NullPointerException 如果指定的操作为空

鸿蒙OS Observer

Observer public interface Observer 当一个类想要被通知可观察对象的变化时,它可以实现 Observer 接口。 方法总结 修饰符和类型 方法 描述 void update(Observable o, Object arg) 每当观察到的对象发生变化时,都会调用此方法。 方法详情 update void update(Observable o, Object arg) 每当观察到的对象发生变化时,都会调用此方法。 应用程序调用 Observable 对象的 notifyObservers 方法来通知对象的所有观察者更改。 参数: 参数名称 参数描述 o 可观察的对象。 arg 传递给 notifyObservers 方法的参数。