我有一些包含关键字的arraylist字符串!
A windows is arraylist带有关键字的字符串是粗体的窗口结构:9个单词之前+关键字+9个单词之后
您可以看到一些窗口重叠

如何组合arraylist来像这样接收:

谢谢
发布于 2010-05-25 11:31:28
如果您不太担心性能,那么编写一个简单的subList/equals匹配非常容易:
String[] texts = {
"sunset lake michigan michigan alaska water florida "
+ "peninsula third largest water seventh largest water "
+ "percentage edit list largest country",
"michigan alaska water florida peninsula third largest water "
+ "seventh largest water percentage edit list largest country "
+ "subdivision list political",
"third largest water seventh largest water percentage edit list "
+ "largest country subdivision list political geographic "
+ "subdivisions total edit references"
};
List<String> joined = new ArrayList<String>();
for (String text : texts) {
List<String> textAsList = Arrays.asList(text.split(" "));
final int N = joined.size();
final int M = textAsList.size();
for (int k = Math.min(N, M); k >= 0; k--) {
if (joined.subList(N - k, N).equals(textAsList.subList(0, k))) {
joined.addAll(textAsList.subList(k, M));
break;
}
}
}
System.out.println(joined);这将打印:
[sunset, lake, michigan, michigan, alaska, water, florida,
peninsula, third, largest, water, seventh, largest, water,
percentage, edit, list, largest, country, subdivision, list,
political, geographic, subdivisions, total, edit, references]该算法的工作原理是这样的:为了构建List<String> joined,给定一个List<String> textAsList,我们找到joined的“尾”和textAsList的“头”之间最长的subList匹配。
发布于 2010-05-25 11:09:25
请参阅和这些使用DefaultHighlighter的examples。
补充:啊,我以为你只是需要看看风景。对于该模型,请考虑本answer中讨论的。
https://stackoverflow.com/questions/2901635
复制相似问题