我有一个 ArrayList,其中包含一些按字母顺序排序的唯一字符串。
我想将字符串的索引存储在列表中,该索引以数组中的字符开头,该数组有 27 个对应于每个字母字符的插槽,还有一个额外的插槽用于其他字符。
例如。
1 次击倒
13天
之后
之间
公司
家庭
远
首页
重要
直播
地段
意思是
可能
全国
下一个
超过
一样
小
所以
仍然
谈话
虽然
也是
扎克斯
因此,当我迭代这个列表时,如果我找到一个以 char 'a' 开头的单词,它应该将该单词在列表中的索引放入我的数组 [0] 中。像这样,如果我找到一个以 char 'b' 开头的单词,它应该将该单词在列表中的索引放入我的数组 [1] 中,依此类推,直到数组 [25] 中的 char 'z' ,如果它以任何其他字符开头,它应该将该字符的索引放入数组 [26] 中。
如果在列表中找不到以特定字符开头的单词,则使用最后找到的字符的索引。
所以在完成逻辑之后,
数组[0] = 2//A
数组[1] = 3//B
数组[2] = 4//C
array[3] = 4//D,列表中没有 D 的单词,因此采用 'c' 的索引
array[4] = 4//E,列表中没有 E 的单词,因此采用 'c' 的索引
数组[5] = 6//F
array[6] = 6//G,列表中没有 D 的单词,因此采用 'f' 的索引
.
.
.
array[24] = 最后找到的单词的索引,即。 't'
数组[25] = 23//Z
array[26] = 1//数字字符
我的逻辑是
public static int [] calculateIndexForAlphabets(List libList)
{
int[] array = new int[27];
for (int x = libList.size() - 1; x >= 0; x--)
{
Item lmi = (Item) libList.get(x);
String name = lmi.getName(); //my method to return the name
if (name != null)
{
// Not sure what to do inside
// thinking of something like taking the name.toLowerCase().charAt(0) and using that
}
}
return array;
}
请提供一些对此的见解。
谢谢,
森
最佳答案
你走在正确的道路上。获得第一个字符后,检查它是否在 'a'
和 'z'
之间,如果是,则从中减去 'a'
以查找索引。如果不是,则索引为 26。
最后,通过迭代结果来填充缺失的索引。
关于java - 将以字母开头的数组列表中的单词索引存储到一个数组中,该数组可以存储每个字母的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21074214/