簡體   English   中英

將文件讀入 HashMap Java

[英]Read file into HashMap Java

我正在嘗試將文件中的行讀入 Arraylist。 這是我的作家:

private Map<Integer, ArrayList<Integer>> motPage = 
                                             new HashMap<Integer, ArrayList<Integer>>();

private void writer() throws UnsupportedEncodingException, FileNotFoundException, IOException{

  try (Writer writer = new BufferedWriter(
                          new OutputStreamWriter(
                             new FileOutputStream("/home/kdiri/workJuno/motorRecherche/src/kemal.txt"), "utf-8"))) {
    for(Map.Entry<Integer, ArrayList<Integer>> entry : motPage.entrySet()){
      writer.write(entry.getKey() + " : " + entry.getValue() + "\n");
    }
  }
}

這是文件 kemal.txt 中的示例結果:

0 : [38, 38, 38, 38, 199, 199, 199, 199, 3004, 3004, 3004, 3004, 23, 23]

我的問題是如何將這些行有效地再次讀入 Hashmap 中? 因為文件大小約為 500MB。 先感謝您。

正如 JonSkeet 所說,你應該從一些工作開始。 在下面找到一種可能的方法。 該代碼段非常冗長以顯示原理。

String line = "0 : [38, 38, 38, 38, 199, 199, 199, 199, 3004, 3004, 3004, 3004, 
    23, 23]";

int firstSpace = line.indexOf(" ");
int leftSquareBracket = line.indexOf("[");
int rightSquareBracket = line.indexOf("]");

String keyString = line.substring(0, firstSpace);        
String[] valuesString = line.substring(leftSquareBracket + 1, rightSquareBracket)
    .split(", ");

int key = new Integer(keyString);
List<Integer> values = new ArrayList<>(valuesString.length);
for (String value : valuesString) {
    values.add(new Integer(value));
}

Map<Integer, List<Integer>> motPage = new HashMap<>();
motPage.put(key, values);

順便提一句。 read ... these lines efficiently into Hashmap取決於您的要求。 效率可以是例如:

  • 大文件讀取速度
  • 字符串到整數的轉換速度
  • 字節碼的小尺寸
  • 更少的對象生成
  • ......還有其他的

當代碼段不符合您的efficiency標准時。 開始調整影響您的標准的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM