【问题标题】:Save a file as a hash map java [closed]将文件另存为哈希映射 java [关闭]
【发布时间】:2016-01-19 14:49:07
【问题描述】:

我对 Java 很陌生,我正在做一个项目。有人告诉我,为了完成这个项目,我需要将一个文件保存到哈希映射中。该文件包含单词及其缩写,因此稍后我希望能够搜索特定单词,然后返回它的缩写。我已经能够制作散列映射并访问该文件,但我一直不知道如何将其保存到散列映射中。

public Shortener() {
    Map<String, String> abbrevFile = new HashMap<String, String>();
    File file = new File("C:\\abbreviations.txt");

【问题讨论】:

  • 那么,您希望文件具有什么格式?到目前为止,您尝试过什么?
  • ... Jon 所说的:我猜你需要逐行读取文件。然后拆分每一行并将部分作为键和值添加到地图中。您应该能够单独查找这些步骤。
  • 我的文件目前是这样设置的:单词,缩写词,缩写词,缩写我不太清楚如何逐行读取文件,因为我真的是 Java 新手。感谢您的帮助

标签: java dictionary hash hashmap


【解决方案1】:

我会使用属性文件,因为它是现有格式。

例如

Hello=Hi
Abreviation=Abr

比如

Properties p = new Properties();
p.load(file);
abbrevFile.putAll((Map) p);

要查找地图,您可以这样做

public String lookup(String word) {
    return abbrevFile.get(word);
}

【讨论】:

  • 当我想返回缩写时,这将如何工作?我以前从未听说过属性。感谢您的帮助:D
  • @Brigzy97 我添加了如何查找地图。
  • 这只会返回缩写?
  • 好的,谢谢!我一定会试试这个
【解决方案2】:

这是一个读取文件并将数据存储在 hashmap 中的示例

    static HashMap<String, String> wordList = new HashMap<>();

    public static void main(String[] args) {
        readFile(new File("words.txt"));
    }

    private static void readFile(File file) {
        try {
            BufferedReader br = new BufferedReader(new FileReader(file));
            String line;

            while ((line = br.readLine()) != null) {
               String[] args = line.split("-");
               wordList.put(args[0], args[1]);
            }

            System.out.println("Populated list with "+ wordList.size() + " words.");

            br.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

提供您的格式为以下格式

word-abbreviation
word-abbreviation
word-abbreviation

【讨论】:

  • 我可以按照大部分内容进行操作,但 catch 有什么作用?谢谢您的帮助。我可以看到它是如何工作的而且我从未听说过 bufferReader,这只是为了读取文件吗?
  • 我不会在这里捕获并打印错误,因为这就像假装发生的错误无关紧要。最好将其传递给调用者。
  • @PeterLawrey 请你给我解释一下?抱歉所有问题和我缺乏知识
  • @Brigzy97 如果您在此处捕获异常,则调用代码将不知道发生了这种情况,即使它可能是空的,它也会使用 Map,而如果您 throws 调用者可以接受异常如果发生错误,则执行不同的操作。
  • 这里应该没有错误,前提是文件正确关闭并且确实存在,所以应该没什么好担心的,但是是的,抛出异常可能会更好。
猜你喜欢
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多