我有一个列表存储为文本文件,存储为
Id;name;function
我有一个函数,它接受文本文件并逐行读取,每行文本都是List中的新项。通过休假来实现。
List<String> list
list.add(line);
我要做的是查看列表中是否有“0x0640e331”之类的ID。如果它是文本行上的所有内容,那么找到Id。所以不会发生这种情况,
0x0604f552;name0;function
0x0640e331;name1;function
0x0342t521;name2;function
搜索0x0640e331将返回0x0640e331; name1; function。
有什么想法吗?
答案 0 :(得分:1)
像这样使用startsWith
method ......
ArrayList<String> queryResult = new ArrayList<String>();
String query = "0x0640e331";
for(String line : list) {
if(line.startsWith(query)) {
queryResult.add(line);
}
}
return queryResult;
这基本上检查数组列表中的给定行是否以query
字符串开头。如果有多行,只需将其添加到另一个ArrayList中,然后将其作为结果返回。
答案 1 :(得分:0)
Use Map<String,List>
将您的ID作为密钥存储在Map中,并检索密钥
上的值答案 2 :(得分:0)
您可以使用地图而不是列表。请参阅下面给出的示例程序
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class TextProgram {
public static void main(String args[]) {
String lineArray[] = { "0x0604f552;name0;function",
"0x0640e331;name1;function", "0x0342t521;name2;function" };
Map<String, String> map = new HashMap<String, String>();
StringTokenizer tokenizer = null;
for (String string : lineArray) {
tokenizer = new StringTokenizer(string, ";");
map.put(tokenizer.nextToken(), string);
}
System.out.println(map.get("0x0640e331"));
}
}
答案 3 :(得分:0)
您可以对列表中的每个元素使用Use Map<String,String>
获取字符串并将其存储在地图中
<强>伪代码:强>
for(String item : list) {
String keyName= //use substring to get the id value from the string variable 'item'
map.put(keyName,item);
}
System.out.println(map.get("0x0640e331"));
答案 4 :(得分:0)
如果您有一个大文件,因此您不想全部阅读,文件中的行按ID排序,您可以使用RandomAccessFile实现自己的binary search算法。要在随机位置读取线条,首先选择位置,然后向前和向后阅读,直到新的线条符号。