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)是一个好主意。
以下显示了直接构建索引的示例。 下面的“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 ...
AlphabeticIndex.ImmutableIndex
者还可以使用 AlphabeticIndex.ImmutableIndex
或AlphabeticIndex本身来支持在不支持AlphabeticIndex功能的客户端上进行排序。
ImmutableIndex既是不可变的,也是线程安全的。 相应的AlphabeticIndex方法不是线程安全的,因为它们“懒惰地”构建索引桶。
int bucketIndex = index.getBucketIndex(name); String label = immutableIndex.getBucket(bucketIndex).getLabel(); // optional RawCollationKey collationKey = collator.getRawCollationKey(name, null);
Nested classes |
|
---|---|
class |
AlphabeticIndex.Bucket<V> 带有标签字符串和类型的索引“存储桶”。 |
class |
AlphabeticIndex.ImmutableIndex<V> |
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
|
AlphabeticIndex (ULocale locale)
创建索引对象。
Parameters | |
---|---|
locale |
ULocale : The locale for the index. |
AlphabeticIndex (Locale locale)
创建索引对象。
Parameters | |
---|---|
locale |
Locale : The locale for the index. |
AlphabeticIndex (RuleBasedCollator collator)
创建一个使用特定整理器的AlphabeticIndex。
索引将被创建而没有标签; 必须在创建后调用addLabels()函数以将所需的标签添加到索引。
索引将直接与提供的整理工作。 如果调用者需要继续使用collator,则应首先进行克隆,以便在创建索引后,提供给AlphabeticIndex的调整器保持不变。
Parameters | |
---|---|
collator |
RuleBasedCollator : The collator to use to order the contents of this index. |
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 |
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 |
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 |
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 |
ImmutableIndex<V> buildImmutableIndex ()
构建此实例的不可变,线程安全的版本,不包含数据记录。
Returns | |
---|---|
ImmutableIndex<V> |
an immutable index instance |
AlphabeticIndex<V> clearRecords ()
清除索引。
Returns | |
---|---|
AlphabeticIndex<V> |
this, for chaining |
int getBucketCount ()
返回索引中的桶数。 这将与标签的数量相同,加上下溢,溢出和流入的桶。
Returns | |
---|---|
int |
number of buckets |
int getBucketIndex (CharSequence name)
获取给定名称的桶号。 该例程允许呼叫者实施他们自己的桶处理机制,包括客户端 - 服务器处理。 例如,当在客户端上创建一个新名称时,它可以向服务器请求该名称的存储桶以及sortkey(使用getCollator)。 一旦客户拥有这些信息,它就可以将名称放入正确的存储桶中,并在该存储桶内对其进行分类,而无需访问索引或整理器。
请注意,存储区编号(和排序键)仅对当前的AlphabeticIndex的设置有效; 如果这些更改,那么必须重新生成桶号和排序键。
Parameters | |
---|---|
name |
CharSequence : Name, such as a name |
Returns | |
---|---|
int |
the bucket index for the name |
List<String> getBucketLabels ()
获取标签。
Returns | |
---|---|
List<String> |
The list of bucket labels, after processing. |
RuleBasedCollator getCollator ()
获取内部使用的collactor的克隆。 请注意,出于性能原因,克隆只会执行一次,然后进行存储。 下一次访问时,返回相同的实例。
如果要更改整理器上的设置,则不要在线程之间使用此方法,至少不要同步。
Returns | |
---|---|
RuleBasedCollator |
a clone of the collator used internally |
String getInflowLabel ()
获取用于其他标签之间的缩略桶的默认标签。 例如,考虑使用拉丁语和希腊语的标签:XYZ ...Î'Î'Γ。
Returns | |
---|---|
String |
inflow label |
int getMaxLabelCount ()
获取索引中标签数量的限制。 桶的数量可以稍大些:请参阅getBucketCount()。
Returns | |
---|---|
int |
maxLabelCount maximum number of labels. |
String getOverflowLabel ()
获取IndexCharacters'语言环境中用于溢出的默认标签,例如:ABC中的第一项
Returns | |
---|---|
String |
overflow label |
int getRecordCount ()
返回索引中的记录数:即,在所有存储桶中添加了addRecord(...)的不同<名称,数据>对的总数。
Returns | |
---|---|
int |
total number of records in buckets |
String getUnderflowLabel ()
获取IndexCharacters的语言环境中用于下溢的默认标签,例如:XYZ中的最后一项...
Returns | |
---|---|
String |
underflow label |
Iterator<Bucket<V>> iterator ()
通过桶返回一个迭代器。
Returns | |
---|---|
Iterator<Bucket<V>> |
iterator over buckets. |
AlphabeticIndex<V> setInflowLabel (String inflowLabel)
设置inflowLabel标签
Parameters | |
---|---|
inflowLabel |
String : see class description |
Returns | |
---|---|
AlphabeticIndex<V> |
this, for chaining |
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 |
AlphabeticIndex<V> setOverflowLabel (String overflowLabel)
设置溢出标签
Parameters | |
---|---|
overflowLabel |
String : see class description |
Returns | |
---|---|
AlphabeticIndex<V> |
this, for chaining |
AlphabeticIndex<V> setUnderflowLabel (String underflowLabel)
设置underflowLabel标签
Parameters | |
---|---|
underflowLabel |
String : see class description |
Returns | |
---|---|
AlphabeticIndex<V> |
this, for chaining |