JAVAHashMap,如何使代码更有效?

JAVAHashMap,如何使代码更有效?,java,hashmap,Java,Hashmap,不久前我开始学习Java,现在我从老师那里得到了一个有趣的任务。我将非常感谢所有能帮助我的人。我不想直接得到我问题的答案,我想看看有什么方法可以帮助我理解核心 这是我的代码片段 更高,我有一些文本(字符串)被转换为列表 List<String> list = Arrays.asList( text.split( " ")); Map<String, Integer> hashMap = new HashMap<>(); int uniqueWords = 0

不久前我开始学习Java,现在我从老师那里得到了一个有趣的任务。我将非常感谢所有能帮助我的人。我不想直接得到我问题的答案,我想看看有什么方法可以帮助我理解核心

这是我的代码片段

更高,我有一些文本(字符串)被转换为列表

List<String> list = Arrays.asList( text.split( " "));

Map<String, Integer> hashMap = new HashMap<>();
int uniqueWords = 0;     
for (String word: list){
    Integer count = hashMap.get(word);
    hashMap.put(word, count == null ? 1 : count + 1);
    if (count == null){
        uniqueWords++;
    }else if (count == 1){
        uniqueWords --;
    }
}
List List=Arrays.asList(text.split(“”));
Map hashMap=新hashMap();
int uniqueWords=0;
for(字符串字:列表){
整数计数=hashMap.get(word);
put(word,count==null?1:count+1);
如果(计数=null){
uniqueWords++;
}否则如果(计数=1){
独特的词语--;
}
}
我需要更有效地编写代码。我想了好几天,没法更有效地编码了。我需要帮助)

使用一套:

String text = "one two three one";
List<String> list = Arrays.asList( text.split( " "));

Set<String> uniqs = new HashSet<>();
uniqs.addAll(list);
System.out.println(uniqs.size()); // prints 3
String text=“一二三一”;
List=Arrays.asList(text.split(“”);
Set uniqs=new HashSet();
uniqs.addAll(列表);
System.out.println(uniqs.size());//印刷品3

仅仅从“理论”的角度来看,有很多东西:

  • 从映射中检查计数值3次。你只能做一次
  • 您仍然可以使用
    if
    语句,也可以使用
    switch
    语句
  • 正如@johnbollinger所说的,从split中去掉String[]就足够了
  • 不要使用hasMap.get(word)先检查is
    count==null
    你可以先做hashMap.containsKey(word)。这没什么区别,只是口味的问题

  • 注:
    列表有更多的“奇特”方式,比如使用
    索引of
    最新索引of
    子列表

    请详细说明您的要求。欢迎使用StackOverflow!让代码“更有效”到底是什么意思?你的老师告诉你需要改变什么了吗?只有一个,要做得更有效(这段代码)这就是全部保持一个明确的唯一单词的运行计数没有特别的意义,因为该计数将始终等于地图中的条目数,即它的
    size()
    。这也没有任何好处(出于你的目的)将
    String.split()的结果包装到
    列表中
    ;您可以直接在结果上迭代,而不是使用
    String[]
    。我认为,首先使用
    containskey()
    会损害性能,因为如果找到,您需要调用
    get()
    ,然后再进行一次查找。现在的问题是效率。