Java语言打开字典和读取字典进行了以后

Java语言打开字典和读取字典进行了以后,然后字典出现了一个重复的报错,现在不要报错,要允许重复的数据怎么实现

是这个意思不

img

img


代码如下 :

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class DictionaryExample {

    public static void main(String[] args) {
        List<String> dictionary = new ArrayList<>();
        String filePath = System.getProperty("user.dir") + "/src/dictionary.txt";

        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                dictionary.add(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 输出字典内容
        for (String word : dictionary) {
            System.out.println(word);
        }
    }
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 您还可以看一下
  • 徐无忌老师的Java进阶高手课-深入浅出Java网络编程课程中的 案例实战:浏览器打开一个网址,整个过程是怎么样的?小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我可以利用Java语言中的HashMap数据结构来处理字典中的重复项问题,并允许重复数据输入。HashMap是一种键值对映射的数据结构,它允许我们通过键来查找与之相关联的值。在HashMap中,每个键都必须是唯一的,但值可以重复。

    以下是具体步骤:

    1. 创建一个HashMap对象,用于存储键值对。
    HashMap<String, String> dict = new HashMap<>();
    

    这里我们以String类型的键和值为例。

    1. 在读取数据时,先判断HashMap中是否已经存在该键。
    if (dict.containsKey(key)) {
        // 如果已存在,可以选择更新值或者忽略该键值对
    } else {
        dict.put(key, value);
    }
    

    如果已存在该键,我们可以选择更新其对应的值,或者忽略该键值对。如果不存在,则将该键值对存储到HashMap中。

    1. 如果我们允许重复的值,则可以将值存储在List集合中,并将该List作为HashMap中的值。每次插入数据时,我们只需要将数据存储到该List中即可。
    if (dict.containsKey(key)) {
        List<String> values = dict.get(key);
        values.add(value);
    } else {
        List<String> values = new ArrayList<>();
        values.add(value);
        dict.put(key, values);
    }
    

    这里我们以List类型作为值进行存储。

    完整的Java代码如下所示:

    import java.util.HashMap;
    import java.util.List;
    import java.util.ArrayList;
    
    public class Dictionary {
        private HashMap<String, List<String>> dict = new HashMap<>();
    
        public void insert(String key, String value) {
            if (dict.containsKey(key)) {
                List<String> values = dict.get(key);
                values.add(value);
            } else {
                List<String> values = new ArrayList<>();
                values.add(value);
                dict.put(key, values);
            }
        }
    
        public List<String> search(String key) {
            return dict.getOrDefault(key, new ArrayList<>());
        }
    }
    

    这里我们实现了一个简单的字典类,其中insert方法用于插入数据,而search方法用于查找数据。在插入数据时,我们首先判断字典中是否已经存在该键,如果存在则将值存储到List中,否则新建一个List并存储到HashMap中。在查找数据是,我们利用HashMap的getOrDefault方法来查找对应的值,并返回一个List。如果该键不存在,则返回一个空的List。

    需要注意的是,在HashMap中存储List是一种比较常见的做法,但是如果频繁进行插入、查找或删除等操作,可能会影响性能。因此,在具体实现中需要根据实际情况进行考虑和优化。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^