Java 列表<;字符串>;包含此项的项目
我有一个存储为文本文件的列表,存储为文本文件Java 列表<;字符串>;包含此项的项目,java,android,string,arraylist,Java,Android,String,Arraylist,我有一个存储为文本文件的列表,存储为文本文件 Id;name;function 我有一个函数,它接收文本文件并逐行读取,每行文本都是列表中的一个新项。通过休闲来实现 List<String> list list.add(line); 搜索0x0640e331将返回0x0640e331;名称1;功能 有什么想法吗?像这样使用 ArrayList<String> queryResult = new ArrayList<String>(); String que
Id;name;function
我有一个函数,它接收文本文件并逐行读取,每行文本都是列表中的一个新项。通过休闲来实现
List<String> list
list.add(line);
搜索0x0640e331将返回0x0640e331;名称1;功能
有什么想法吗?像这样使用
ArrayList<String> queryResult = new ArrayList<String>();
String query = "0x0640e331";
for(String line : list) {
if(line.startsWith(query)) {
queryResult.add(line);
}
}
return queryResult;
ArrayList queryResult=new ArrayList();
字符串查询=“0x0640e331”;
用于(字符串行:列表){
if(行.起始带(查询)){
queryResult.add(行);
}
}
返回查询结果;
这基本上检查数组列表中的给定行是否以查询
字符串开头。如果有多行,只需将其添加到另一个ArrayList中并返回结果。使用Map
Use Map<String,List>
将id存储为地图中的键,并检索键上的值您可以使用地图而不是列表。请参阅下面给出的示例程序
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"));
}
}
import java.util.HashMap;
导入java.util.Map;
导入java.util.StringTokenizer;
公共类文本程序{
公共静态void main(字符串参数[]){
字符串lineArray[]={“0x0604f552;名称0;函数”,
“0x0640e331;名称1;函数”,“0x0342t521;名称2;函数”};
Map Map=newhashmap();
StringTokenizer-tokenizer=null;
用于(字符串:lineArray){
标记器=新的StringTokenizer(字符串“;”);
put(tokenizer.nextToken(),string);
}
System.out.println(map.get(“0x0640e331”);
}
}
您可以对列表中的每个元素使用映射
,获取字符串并将其存储在映射中
伪代码:
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"));
如果您有一个大文件,所以不想全部读取,并且文件中的行按id排序,那么您可以使用RandomAccessFile实现自己的算法。要读取随机位置的行,首先选择位置,然后向前和向后读取,直到出现新的行符号。您应该实现HashMap来实现这一点。使用列表,您将获得的检索性能将低于HashMap。如果您想使用list执行此操作,可以使用
标记器
或字符串#startsWith
迭代并检查密钥是否存在。在这种情况下,顺序将等于O(n)。
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"));