2

我想使用 google-collection 将以下文件保存在具有多个键和值的哈希中

Key1_1, Key2_1, Key3_1, data1_1, 0, 0
Key1_2, Key2_2, Key3_2, data1_2, 0, 0
Key1_3, Key2_3, Key3_3, data1_3, 0, 0
Key1_4, Key2_4, Key3_4, data1_4, 0, 0

前三列是不同的键,最后两个整数是两个不同的值。我已经准备了一个代码,它把这些行分块溢出。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class HashMapKey {

  public static void main(String[] args) throws FileNotFoundException, IOException {
    String inputFile = "inputData.txt";

    BufferedReader br = new BufferedReader(new FileReader(inputFile));

    String strLine;
    while ((strLine = br.readLine()) != null) {    
      String[] line = strLine.replaceAll(" ", "").trim().split(",");

      for (int i = 0; i < line.length; i++) {
        System.out.print("[" + line[i] + "]");
      }
      System.out.println();
    }
  }
}

不幸的是,我不知道如何将这些信息保存在 google-collection 中?

先感谢您。

此致,

4

3 回答 3

3

您需要定义 Key 和 Value 类,因此您可以定义

  Map<Key, Value> map = new HashMap<Key, Value>();

注意 Key 类必须覆盖 equals() 和 hashCode()。

Google Collections 提供了少量帮助:Object.hashCode()可以定义哈希码,Maps.newHashMap()可以创建 Map。

于 2010-03-28T04:07:05.633 回答
1

你想拥有一个由多个对象组成的带有键的地图吗?

http://commons.apache.org/collections/apidocs/org/apache/commons/collections/map/MultiKeyMap.html

您是否只想为多个键设置别名以指向相同的值?

然后你可以检查答案如何实现具有多个键的地图?

否则,请说明您希望地图的外观:)

于 2010-03-29T14:07:28.983 回答
0

我有这个代码

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;

public class HashMapKey {

  public static void main(String[] args) throws FileNotFoundException, IOException {
    String fFile = "inputData.txt";

    BufferedReader br = new BufferedReader(new FileReader(fFile));

    HashMap<String, HashMap<String, HashMap<String, String[]>>> mantleMap =
            new HashMap<String, HashMap<String, HashMap<String, String[]>>>();
    HashMap<String, HashMap<String, String[]>> middleMap =
            new HashMap<String, HashMap<String, String[]>>();
    HashMap<String, String[]> inMap =
            new HashMap<String, String[]>();

    String strLine;
    while ((strLine = br.readLine()) != null) {

      String[] line = strLine.replaceAll(" ", "").trim().split(",");

      for (int i = 0; i < line.length; i++) {
        System.out.print("[" + line[i] + "]");
      }

      inMap.put(line[2], new Integer[]{line[3], line[4]});
      middleMap.put(line[1], inMap);
      mantleMap.put(line[0], middleMap);

      System.out.println();
    }

    String[] values = mantleMap.get("Key1_1").get("Key2_1").get("Key3_1");
    for (String h : values) {
      System.out.println(h);
    }
  }
}

但不幸的是,我无法打印出 HashMaps 内容。

如何打印 HashMap 内容?

于 2010-04-12T12:48:21.970 回答