我想HashMap只有一个键值对象.
我创建了以下内容HashMap:
HashMap <Integer,String>DocsCollection = new HashMap <Integer,String>();
Run Code Online (Sandbox Code Playgroud)
在HashMap中,我想只有一个条目/对象.密钥类型是Integer.值类型是String.
例如= <1,"foo.txt">
每当我在文件中找到特定单词时,我都希望这样
增加键中的计数器
在值中添加新文件
例如,比方说,我在一家搜索单词"你好" DocsCollection,我要存储单词"你好"一词频率的每一次出场并连接所有的新文件到以前的值.
<3, "foo.txt的,hello.txt的,的test.txt">
3意味着我在三个文件中找到了"Hello"这个词.
并且Value由找到单词的文件组成
如果我使用方法put,则会在HashMap密钥更改的原因中创建一个新条目.它不稳定.它以"1"开头,但是当我第二次找到该字时,键增加然后put方法插入一个带有新键的新条目但是我想只有一个条目并修改密钥.可以这样做吗?我怎样才能在HashMap中只有一个对象并且每次都修改密钥?
DocsCollection.put(2,"foo.txt,hello.txt");
Run Code Online (Sandbox Code Playgroud)
提前致谢
Nik*_*huk 23
试试这种方式:
DocsCollection = Collections.singletonMap(2, "foo.txt,hello.txt");
Run Code Online (Sandbox Code Playgroud)
此地图无法修改,如果你想这样做只是这样做:
DocsCollection = Collections.singletonMap(3, "foo.txt,hello.txt");
Run Code Online (Sandbox Code Playgroud)
地图方法可能不是最好的.问题是你正在改变你的关键价值.
请注意,最好只有一个List<String>,并且每次匹配单词时,只需将文件添加到列表中即可.您可以轻松获得计数list.size()
我会尝试为我认为你的任务提出一些不同的解决方案:
hello等)您可以使用MultiMap(番石榴):
map.put("hello", "file1.txt"); map.put("hello", "file2.txt");map.keys().count("hello") - 获取每个单词的找到次数map.get("hello")返回Collection<String>包含该单词的所有文件你可以在那张地图中拥有尽可能多的单词.如果你需要每个地图一个条目,你需要X字的X地图.