Java语言读取打开一个字典的对象的时候,出错的解决的办法

Java语言读取打开一个字典的对象的时候,怎么同时插入相同的数据并且不要重复,出错的解决的办法

在Java中,字典通常被表示为Map对象。Map对象存储键值对,其中键是唯一的。如果你试图插入一个已经存在的键,那么新的值将会覆盖旧的值。这就是为什么你不能在Map中插入重复的键。

如果你想在Map中存储多个相同的值,但是不想有重复的键,你有几种选择:

  1. 使用Set作为值:你可以将Map的值类型设置为Set,这样你就可以在每个键下存储多个唯一的值。例如:

    Map<String, Set<String>> map = new HashMap<>();
    Set<String> set = new HashSet<>();
    set.add("value1");
    set.add("value2");
    map.put("key", set);
    

    在这个例子中,我们创建了一个Map,它的键是String类型,值是Set<String>类型。我们然后创建了一个Set,添加了两个值,并将这个Set作为值放入了Map中。

  2. 使用List作为值:如果你想在每个键下存储多个值,包括重复的值,你可以将Map的值类型设置为List。例如:

    Map<String, List<String>> map = new HashMap<>();
    List<String> list = new ArrayList<>();
    list.add("value1");
    list.add("value2");
    map.put("key", list);
    

    在这个例子中,我们创建了一个Map,它的键是String类型,值是List<String>类型。我们然后创建了一个List,添加了两个值,并将这个List作为值放入了Map中。

  3. **使用Multimap**:Multimap是Google Guava库提供的一个数据结构,它允许你在每个键下存储多个值。例如:

    Multimap<String, String> multimap = ArrayListMultimap.create();
    multimap.put("key", "value1");
    multimap.put("key", "value2");
    

    在这个例子中,我们创建了一个Multimap,然后在同一个键下添加了两个值。

这些方法都可以让你在Map中存储多个值,但是选择哪种方法取决于你的具体需求。


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

public class DictionaryLoader {
    public static void main(String[] args) {
        String filePath = "dic.txt";
        Set<String> dictionary = new HashSet<>();

        try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = br.readLine()) != null) {
                dictionary.add(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
}
        for (String word : dictionary) {
            System.out.println(word);
        }
    }
}