如何使用java计算向量中的不同元素?

如何使用java计算向量中的不同元素?,java,collections,Java,Collections,我手头有很多话要说。我需要做的是保存它们并数一数每一个不同的单词。原始数据可能包含一些重复的字。首先,我想使用Set,然后我可以保证我只得到不同的WROD。但是我怎么计算他们的时间呢?有人有什么“聪明”的想法吗 您可以使用番石榴图书馆的MultiSet 您可以使用番石榴图书馆的MultiSet 您可以使用Map解决此问题 String sample = " I have a problem here. I have a lot of words at hand. What I need to d

我手头有很多话要说。我需要做的是保存它们并数一数每一个不同的单词。原始数据可能包含一些重复的字。首先,我想使用Set,然后我可以保证我只得到不同的WROD。但是我怎么计算他们的时间呢?有人有什么“聪明”的想法吗

您可以使用番石榴图书馆的
MultiSet


您可以使用番石榴图书馆的
MultiSet


您可以使用Map解决此问题

String sample = " I have a problem here. I have a lot of words at hand. What I need to do is to save them and count every different word. The original data may contains duplicate words.Firstly, I want to use Set, then I can guarantee that I only get the different wrods. But how can I count their times? Is there someone having any clever idea?";
    String[] array = sample.split("[\\s\\.,\\?]");
    Map<String,Integer> statistic = new HashMap<String,Integer>();
    for (String elem:array){
        String trimElem = elem.trim();
        Integer count = 0;
        if(!"".equals(trimElem)){
            if(statistic.containsKey(trimElem)){
                count = statistic.get(trimElem);
            }
            count++;
            statistic.put(trimElem,count);
        }
    }
字符串示例=“我这里有个问题。我手头有很多话要说。我需要做的是保存它们并数一数每一个不同的单词。原始数据可能包含重复的字。首先,我想使用Set,然后我可以保证我只得到不同的WROD。但是我怎么计算他们的时间呢?有人有什么聪明的主意吗;
字符串[]数组=sample.split(“[\\s\\,\\?]”);
Map statistic=newhashmap();
for(字符串元素:数组){
String trimElem=elem.trim();
整数计数=0;
如果(!“”.equals(trimElem)){
if(统计容器(trimElem)){
count=statistic.get(trimElem);
}
计数++;
统计。放置(trimElem,count);
}
}

您可以使用Map解决此问题

String sample = " I have a problem here. I have a lot of words at hand. What I need to do is to save them and count every different word. The original data may contains duplicate words.Firstly, I want to use Set, then I can guarantee that I only get the different wrods. But how can I count their times? Is there someone having any clever idea?";
    String[] array = sample.split("[\\s\\.,\\?]");
    Map<String,Integer> statistic = new HashMap<String,Integer>();
    for (String elem:array){
        String trimElem = elem.trim();
        Integer count = 0;
        if(!"".equals(trimElem)){
            if(statistic.containsKey(trimElem)){
                count = statistic.get(trimElem);
            }
            count++;
            statistic.put(trimElem,count);
        }
    }
String sample=“我这里有个问题。我手头有很多话要说。我需要做的是保存它们并数一数每一个不同的单词。原始数据可能包含重复的字。首先,我想使用Set,然后我可以保证我只得到不同的WROD。但是我怎么计算他们的时间呢?有人有什么聪明的主意吗;
字符串[]数组=sample.split(“[\\s\\,\\?]”);
Map statistic=newhashmap();
for(字符串元素:数组){
String trimElem=elem.trim();
整数计数=0;
如果(!“”.equals(trimElem)){
if(统计容器(trimElem)){
count=statistic.get(trimElem);
}
计数++;
统计。放置(trimElem,count);
}
}

也许您可以使用哈希,在java中,它是HashMap(或HashSet?)
您可以对每个单词进行散列,如果该单词已被散列,则将与之相关的一些值增加1,这就是想法。

也许您可以使用散列,在java中,它是HashMap(或HashSet?)
您可以对每个单词进行哈希运算,如果该单词已进行哈希运算,则将与之相关的一些值增加一个,这就是想法。

您可以从阅读开始,是的,谢谢您的建议。我曾尝试在Java API中找到一种聪明的方法,但我不明白。我想要的是实现目标的简单方法,而不是复杂或愚蠢的方法一。好吧,你知道你想要一个,为什么不从那里开始,看看它会带你去哪里。尝试一些东西,如果你卡住了,问;)好的,我知道你的意思。也许我最需要的是对API足够熟悉。谢谢你的建议。你可以从阅读开始,是的,谢谢你的建议。我试图找到一个聪明的w是的,在Java API中,但我不明白。我想要的是一种实现目标的简单方法,而不是复杂或愚蠢的方法。好吧,你知道你想要一个,为什么不从那里开始,看看它会带你去哪里。试试看,如果你卡住了,问;)好的,我知道你的意思。也许我最需要的是熟悉API。谢谢r你的建议。这正是我需要的。非常感谢。这正是我需要的。非常感谢。好吧,这确实是实现目标的一个非常聪明的方法。但是使用
sgp15
建议的
MultiSet
可能更方便。你这样认为吗?顺便说一句,你的代码对我很有用。谢谢!交易-关闭的是代码简单性与引入额外的库。如果我需要,我会使用番石榴来实现这一点,但如果不需要,我会使用这个答案。好吧,这确实是实现目标的一个非常聪明的方法。但是使用
sgp15
建议的
MultiSet
可能更方便。你这样认为吗?顺便问一下,你的代码很有用对我来说,谢谢!权衡是代码简单性和引入额外的库。如果我需要,我会使用番石榴,但如果不需要,我会使用这个答案。