List <string>包含此</string>的项目

时间:2013-03-04 06:18:32

标签: java android string arraylist

我有一个列表存储为文本文件,存储为

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。

有什么想法吗?

5 个答案:

答案 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算法。要在随机位置读取线条,首先选择位置,然后向前和向后阅读,直到新的线条符号。