所以我有这样的东西:
List<String> test = new ArrayList<String>();
当我打印它时,我有:
"[ABC, DEF, GHI, JKL]"
我想搜索“E”的示例索引。我是这样做的:
for (String a : test) {
if(a.contains("E")) {
System.out.println(test.indexOf(a));
}
}
有没有更快的方法来做到这一点?因为现在我每次都在所有列表上制作“for”。
最佳答案
您可以使用置换索引,通常用于单词:
["he speaks well", "well done"]
会给出一个排序列表
well *done*
*he* speaks well
he *speaks* well
he speaks *well*
*well* done
在那里你可以快速找到“好”。
在我们的例子中,这样的列表条目将是:
class Entry implements Comparable<Entry> {
String right;
String left;
@Override
public String toString() { return left + "^" + right; }
}
对于每个长度为 N 的字符串,都有 N、N-1、...、2、1 个字符的正确
个值。
class SearchBase {
private List<Entry> entries; // Or immediately sorted: TreeSet
void addAll(String... terms) {
fill list entries, and sort them
}
Collection<String> termsContaining(String sought) {
binary search on entries rigth
}
}
关于java - 在 ArrayList 中查找字符串索引的更快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31938619/