Most visited

Recently visited

Added in API level 24

AlphabeticIndex

public final class AlphabeticIndex
extends Object implements Iterable<Bucket<V>>

java.lang.Object
   ↳ android.icu.text.AlphabeticIndex<V>


AlphabeticIndex支持创建适合给定语言的UI索引。 它可以支持直接使用,也可以与不支持本地化整理的客户端一起使用。 以下是一个索引在UI中的样子:

  ... A B C D E F G H I J K L M N O P Q R S T U V W X Y Z  ...

  A
     Addison
     Albertson
     Azensky
  B
     Baecker
  ...
 
The class can generate a list of labels for use as a UI "index", that is, a list of clickable characters (or character sequences) that allow the user to see a segment (bucket) of a larger "target" list. That is, each label corresponds to a bucket in the target list, where everything in the bucket is greater than or equal to the character (according to the locale's collation). Strings can be added to the index; they will be in sorted order in the right bucket.

该类还支持在第一个(下溢),最后一个(溢出)之后以及脚本之间(流入)之间有字符串的存储区。 例如,如果索引是用俄语和英语的标签构造的,则希腊字符将落入其他两个脚本之间的流入桶中。

注意:如果你期望有很多ASCII或拉丁字符以及来自用户语言的字符,那么调用addLabels(ULocale.English)是一个好主意。

Direct Use

以下显示了直接构建索引的示例。 下面的“show ...”方法只是为了说明用法。

 // Create a simple index where the values for the strings are Integers, and add the strings
 
 AlphabeticIndex<Integer> index = new AlphabeticIndex<Integer>(desiredLocale).addLabels(additionalLocale);
 int counter = 0;
 for (String item : test) {
     index.addRecord(item, counter++); 
 }
 ...
 // Show index at top. We could skip or gray out empty buckets
 
 for (AlphabeticIndex.Bucket<Integer> bucket : index) {
     if (showAll || bucket.size() != 0) {
         showLabelAtTop(UI, bucket.getLabel());
     }
 }
  ...
 // Show the buckets with their contents, skipping empty buckets
 
 for (AlphabeticIndex.Bucket<Integer> bucket : index) {
     if (bucket.size() != 0) {
         showLabelInList(UI, bucket.getLabel());
         for (AlphabeticIndex.Record<Integer> item : bucket) {
             showIndexedItem(UI, item.getName(), item.getData());
         }
 
The caller can build different UIs using this class. For example, an index character could be omitted or grayed-out if its bucket is empty. Small buckets could also be combined based on size, such as:
 ... A-F G-N O-Z ...
 

Client Support

AlphabeticIndex.ImmutableIndex者还可以使用 AlphabeticIndex.ImmutableIndex或AlphabeticIndex本身来支持在不支持AlphabeticIndex功能的客户端上进行排序。

ImmutableIndex既是不可变的,也是线程安全的。 相应的AlphabeticIndex方法不是线程安全的,因为它们“懒惰地”构建索引桶。

Summary

Nested classes

class AlphabeticIndex.Bucket<V>

带有标签字符串和类型的索引“存储桶”。

class AlphabeticIndex.ImmutableIndex<V>

AlphabeticIndex不可变的线程安全版本。

class AlphabeticIndex.Record<V>

一个(名称,数据)对,按名称排序到其中一个索引桶中。

Public constructors

AlphabeticIndex(ULocale locale)

创建索引对象。

AlphabeticIndex(Locale locale)

创建索引对象。

AlphabeticIndex(RuleBasedCollator collator)

创建一个使用特定整理器的AlphabeticIndex。

Public methods

AlphabeticIndex<V> addLabels(Locale... additions)

添加更多索引字符(除了语言环境中的内容)

AlphabeticIndex<V> addLabels(UnicodeSet additions)

添加更多索引字符(除了语言环境中的内容)

AlphabeticIndex<V> addLabels(ULocale... additions)

添加更多索引字符(除了语言环境中的内容)

AlphabeticIndex<V> addRecord(CharSequence name, V data)

向索引添加记录(名称和数据)。

ImmutableIndex<V> buildImmutableIndex()

构建此实例的不可变,线程安全的版本,不包含数据记录。

AlphabeticIndex<V> clearRecords()

清除索引。

int getBucketCount()

返回索引中的桶数。

int getBucketIndex(CharSequence name)

获取给定名称的桶号。

List<String> getBucketLabels()

获取标签。

RuleBasedCollator getCollator()

获取内部使用的collactor的克隆。

String getInflowLabel()

获取用于其他标签 之间的缩略桶的默认标签。

int getMaxLabelCount()

获取索引中标签数量的限制。

String getOverflowLabel()

获取IndexCharacters'语言环境中用于溢出的默认标签,例如:...中的第一项...

int getRecordCount()

返回索引中的记录数:即,在所有存储桶中添加了addRecord(...)的不同<名称,数据>对的总数。

String getUnderflowLabel()

获取IndexCharacters的语言环境中用于下溢的默认标签,例如:XYZ中的最后一项...

Iterator<Bucket<V>> iterator()

通过桶返回一个迭代器。

AlphabeticIndex<V> setInflowLabel(String inflowLabel)

设置inflowLabel标签

AlphabeticIndex<V> setMaxLabelCount(int maxLabelCount)

设置索引中标签数量的限制。

AlphabeticIndex<V> setOverflowLabel(String overflowLabel)

设置溢出标签

AlphabeticIndex<V> setUnderflowLabel(String underflowLabel)

设置underflowLabel标签

Inherited methods

From class java.lang.Object
From interface java.lang.Iterable

Public constructors

AlphabeticIndex

Added in API level 24
AlphabeticIndex (ULocale locale)

创建索引对象。

Parameters
locale ULocale: The locale for the index.

AlphabeticIndex

Added in API level 24
AlphabeticIndex (Locale locale)

创建索引对象。

Parameters
locale Locale: The locale for the index.

AlphabeticIndex

Added in API level 24
AlphabeticIndex (RuleBasedCollator collator)

创建一个使用特定整理器的AlphabeticIndex。

索引将被创建而没有标签; 必须在创建后调用addLabels()函数以将所需的标签添加到索引。

索引将直接与提供的整理工作。 如果调用者需要继续使用collator,则应首先进行克隆,以便在创建索引后,提供给AlphabeticIndex的调整器保持不变。

Parameters
collator RuleBasedCollator: The collator to use to order the contents of this index.

Public methods

addLabels

Added in API level 24
AlphabeticIndex<V> addLabels (Locale... additions)

添加更多索引字符(除了语言环境中的内容)

Parameters
additions Locale: additional characters to add to the index, such as those in Swedish.
Returns
AlphabeticIndex<V> this, for chaining

addLabels

Added in API level 24
AlphabeticIndex<V> addLabels (UnicodeSet additions)

添加更多索引字符(除了语言环境中的内容)

Parameters
additions UnicodeSet: additional characters to add to the index, such as A-Z.
Returns
AlphabeticIndex<V> this, for chaining

addLabels

Added in API level 24
AlphabeticIndex<V> addLabels (ULocale... additions)

添加更多索引字符(除了语言环境中的内容)

Parameters
additions ULocale: additional characters to add to the index, such as those in Swedish.
Returns
AlphabeticIndex<V> this, for chaining

addRecord

Added in API level 24
AlphabeticIndex<V> addRecord (CharSequence name, 
                V data)

向索引添加记录(名称和数据)。 该名称将用于将项目分类为桶,并在桶内进行排序。 两个记录可能具有相同的名称。 当他们这样做时,排序顺序是根据添加的顺序:首先添加的第一个。

Parameters
name CharSequence: Name, such as a name
data V: Data, such as an address or link
Returns
AlphabeticIndex<V> this, for chaining

buildImmutableIndex

Added in API level 24
ImmutableIndex<V> buildImmutableIndex ()

构建此实例的不可变,线程安全的版本,不包含数据记录。

Returns
ImmutableIndex<V> an immutable index instance

clearRecords

Added in API level 24
AlphabeticIndex<V> clearRecords ()

清除索引。

Returns
AlphabeticIndex<V> this, for chaining

getBucketCount

Added in API level 24
int getBucketCount ()

返回索引中的桶数。 这将与标签的数量相同,加上下溢,溢出和流入的桶。

Returns
int number of buckets

getBucketIndex

Added in API level 24
int getBucketIndex (CharSequence name)

获取给定名称的桶号。 该例程允许呼叫者实施他们自己的桶处理机制,包括客户端 - 服务器处理。 例如,当在客户端上创建一个新名称时,它可以向服务器请求该名称的存储桶以及sortkey(使用getCollator)。 一旦客户拥有这些信息,它就可以将名称放入正确的存储桶中,并在该存储桶内对其进行分类,而无需访问索引或整理器。

请注意,存储区编号(和排序键)仅对当前的AlphabeticIndex的设置有效; 如果这些更改,那么必须重新生成桶号和排序键。

Parameters
name CharSequence: Name, such as a name
Returns
int the bucket index for the name

getBucketLabels

Added in API level 24
List<String> getBucketLabels ()

获取标签。

Returns
List<String> The list of bucket labels, after processing.

getCollator

Added in API level 24
RuleBasedCollator getCollator ()

获取内部使用的collactor的克隆。 请注意,出于性能原因,克隆只会执行一次,然后进行存储。 下一次访问时,返回相同的实例。

如果要更改整理器上的设置,则不要在线程之间使用此方法,至少不要同步。

Returns
RuleBasedCollator a clone of the collator used internally

getInflowLabel

Added in API level 24
String getInflowLabel ()

获取用于其他标签之间的缩略桶的默认标签。 例如,考虑使用拉丁语和希腊语的标签:XYZ ...Î'Î'Γ。

Returns
String inflow label

getMaxLabelCount

Added in API level 24
int getMaxLabelCount ()

获取索引中标签数量的限制。 桶的数量可以稍大些:请参阅getBucketCount()。

Returns
int maxLabelCount maximum number of labels.

getOverflowLabel

Added in API level 24
String getOverflowLabel ()

获取IndexCharacters'语言环境中用于溢出的默认标签,例如:ABC中的第一项

Returns
String overflow label

getRecordCount

Added in API level 24
int getRecordCount ()

返回索引中的记录数:即,在所有存储桶中添加了addRecord(...)的不同<名称,数据>对的总数。

Returns
int total number of records in buckets

getUnderflowLabel

Added in API level 24
String getUnderflowLabel ()

获取IndexCharacters的语言环境中用于下溢的默认标签,例如:XYZ中的最后一项...

Returns
String underflow label

iterator

Added in API level 24
Iterator<Bucket<V>> iterator ()

通过桶返回一个迭代器。

Returns
Iterator<Bucket<V>> iterator over buckets.

setInflowLabel

Added in API level 24
AlphabeticIndex<V> setInflowLabel (String inflowLabel)

设置inflowLabel标签

Parameters
inflowLabel String: see class description
Returns
AlphabeticIndex<V> this, for chaining

setMaxLabelCount

Added in API level 24
AlphabeticIndex<V> setMaxLabelCount (int maxLabelCount)

设置索引中标签数量的限制。 桶的数量可以稍大些:请参阅getBucketCount()。

Parameters
maxLabelCount int: Set the maximum number of labels. Currently, if the number is exceeded, then every nth item is removed to bring the count down. A more sophisticated mechanism may be available in the future.
Returns
AlphabeticIndex<V> this, for chaining

setOverflowLabel

Added in API level 24
AlphabeticIndex<V> setOverflowLabel (String overflowLabel)

设置溢出标签

Parameters
overflowLabel String: see class description
Returns
AlphabeticIndex<V> this, for chaining

setUnderflowLabel

Added in API level 24
AlphabeticIndex<V> setUnderflowLabel (String underflowLabel)

设置underflowLabel标签

Parameters
underflowLabel String: see class description
Returns
AlphabeticIndex<V> this, for chaining

Hooray!