【发布时间】:2019-02-20 01:48:14
【问题描述】:
我想计算给定字符串中的唯一字符并使用集合缓存它们,这样如果字符串已经存在,它就不会再次计算。为此,我使用了HashMap,我将字符串作为键并将其计为值。我已经编写了以下代码,但它不会在映射中添加那些键值对。如何解决这个问题?
class UniqueCharacters {
public int uniqueCharacters(String s)
{
List<Character> list=new ArrayList<Character>();
for(int i=0; i<s.length();i++)
{
if(!(list.contains(s.charAt(i))))
{
list.add(s.charAt(i));
}
}
for(Character c:list)
{
System.out.println(c);
}
int count=list.size();
maintainCache(s, count);
System.out.println(count);
return count;
}
public void maintainCache(String s, int count)
{
Map<String,Integer> map=new HashMap<String,Integer>();
for(Map.Entry<String, Integer> entry: map.entrySet())
{
if(entry.getKey().equals(s))
{
System.out.println(entry.getKey()+" "+entry.getValue());
System.out.println("String was already there");
}
else
{
map.put(s, count);
System.out.println("String added to the cache");
}
}
}
}
public class UniqueCharactersTest {
public static void main(String[] args) {
UniqueCharacters u=new UniqueCharacters();
u.uniqueCharacters("hello");
}
}
【问题讨论】:
-
见
map.get(..) -
全局声明
map -
使用 Map - 或 hasMap - 不仅仅是模拟缓存。它是一个缓存。
标签: java arraylist collections hashmap