Java Arraylist中计数字段出现问题并保存

Java Arraylist中计数字段出现问题并保存,java,arraylist,Java,Arraylist,我有一个ArrayList,它的值是 ACU ACU ACU ACU ACY ACY AER AER AER AGC 我需要得到每个单词的项数,以便 ACU我们将得到4 我们将得到2个 我们将得到3个 AGC我们将得到1 通常,一个单词重复的数字是一个变量 所以另一次ACU可能是1,ACY可能是100 所以,我有一个类来保存值“whatWord”和“howmount” 我被困在这里,因为我知道下面代码中的get(I+1)部分会导致错误,你知道值不存在,但我不知道该怎么办 ArrayList

我有一个ArrayList,它的值是

ACU
ACU
ACU
ACU
ACY
ACY
AER
AER
AER
AGC
我需要得到每个单词的项数,以便

  • ACU我们将得到4
  • 我们将得到2个
  • 我们将得到3个
  • AGC我们将得到1
通常,一个单词重复的数字是一个变量 所以另一次ACU可能是1,ACY可能是100

所以,我有一个类来保存值“whatWord”和“howmount”

我被困在这里,因为我知道下面代码中的get(I+1)部分会导致错误,你知道值不存在,但我不知道该怎么办

ArrayList<Word> arrayWords = new ArrayList<Word>();
 int cuantos = 0;
     for (int i=0;i<OriginalList.size();i++) {
     String word1  = OriginalList.get(i).getWord();
     String word2 = OriginalList.get(i+1).getWord();
             if (word1.equals(word2)){
                       //this counter is bad here... 
                       //where do i increment it??
         howMany++;
         Word a = new Word(word1,howMany);
         ///....DONT KNOW WHERE TO ADD THE OBJECT 
                        //to the list
                         //arrayWords.add(a)
      }
        }
首先,我尝试进行HashMap尝试,请帮助我使用以下代码:

 HashMap table = new HashMap();
    int value=0;
    String key=null;

   //INITIALIZE HASH??? LIKE THIS
    for (int i = 0; i < OriginalList.size; i++) {
        table.put(0,OriginalList.get(i).getWord());      
    }


         String word1=null;
         ArrayList<Word> arrayWords = new ArrayList<Word>();
         //LOOP FOR SEARCHING
         for (int i = 0; i < OriginalList.size(); i++) {
               key = OriginalList.get(i).getWord();
               if (table.containsKey(key)) { 
                       word1 = (String) table.get(key);
                       value++;
               }else {
                      word1 = (String) table.get(key);
                      value=1
               }
             //Add result??
             Word a = new Word(word1,value);
         }
HashMap table=newhashmap();
int值=0;
字符串键=null;
//初始化哈希???这样地
for(int i=0;i

提前谢谢

迭代
原始列表
并将单词放入
哈希映射
。如果不存在,则从count
1开始,否则递增。

为什么不将循环计数器设置为1

String word1  = OriginalList.get(i-1).getWord();
String word2 = OriginalList.get(i).getWord();

这样,您就永远不会超出限制。

对于您想要做的事情来说,这可能是过火了。您可以更简单地创建一个以三个字母字符串作为键、以计数作为值的映射。然后只需在ArrayList上迭代:

Map<String, Integer>wordCount = new HashMap<String, int>();
for(String seq : yourWordList){
    // increment the count of the word by first obtaining its count,
    // and then incrementing it. Paranthesis for clarity
    wordCount.put(seq, (wordCount.get(seq)) + 1);
}
MapwordCount=newHashMap();
for(字符串顺序:yourWordList){
//通过首先获取单词的计数来增加单词的计数,
//然后增加它。为了清楚起见
wordCount.put(seq,(wordCount.get(seq))+1);
}

我认为您要寻找的答案是“普通收藏”

JavaDoc:返回一个映射,将给定集合中的每个唯一元素映射到一个整数,该整数表示该元素在集合中的出现次数

例如

List<String> words = new ArrayList();
Map counts = CollectionUtils.getCardinalityMap(words);
List words=new ArrayList();
映射计数=CollectionUtils.getCardinalityMap(字);

+1好主意,但是对于计算数字,我建议使用AtomicInteger(因为它是可变的)。@Helper:事实上,AtomicXXXXX似乎没有做得更好,请参见Ok!!!,感谢您的帮助,但仍然不知道在我的ArrayList中添加具有正确值的元素的位置,也有您放置“wordCount.get(seq++)”的位置。请解释一下,好吗??谢谢,wordCount将包含这些值!!!,但是“wordCount.get(seq++)”将做什么?在wordCount.put(seq,wordCount.get(seq++)中获取一个错误;“无法从字符串转换为int”如何解决此问题,谢谢!!:)如果我删除反增量wordCount.put(seq,wordCount.get(seq));我得到了列表,但它们的值为null ACU=null ACY=null,由于自动装箱,请参阅@达伦:另外,你的代码应该是
wordCount.put(seq,wordCount.get(seq)++)重复?实际上,看起来埃德加从达伦的解决方案中提出了一个新问题:对不起,凯文·布洛克,原因是我需要解决这个问题,我知道我对地图了解不多,但我确实一直在搜索类似这样的信息
Map<String, Integer>wordCount = new HashMap<String, int>();
for(String seq : yourWordList){
    // increment the count of the word by first obtaining its count,
    // and then incrementing it. Paranthesis for clarity
    wordCount.put(seq, (wordCount.get(seq)) + 1);
}
List<String> words = new ArrayList();
Map counts = CollectionUtils.getCardinalityMap(words);