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"));