检查单词是否等于ArrayList中的特定单词

时间:2016-10-11 16:31:13

标签: java arraylist

我试图创建一个方法,该方法将搜索包含搜索特定字符串的多个单词的ArrayList。如果String不等于ArrayList中的任何单词,它会将单词添加到列表中,如果单词已经存在于列表中,它将计算单词出现的次数,然后再添加一次,这将代表最后一个String输入。 这是我到目前为止在我的代码中所得到的:

public void leggTilOrd(String ord) {
    if (Ord.contains(ord)) {
        teller++;
    }

    if (!Ord.contains(ord)) {
        Ord.add(ord);
    }

    System.out.println(teller);
}

显然,这只会在柜台(柜员)中增加一个号码,所以我试图在列表中所有出现的特定字符串的基础上添加1,这就是我和#39;被卡住了。

编辑:我还应该提到Ord是我之前在代码中创建的ArrayList。 这是完整的代码:

import java.util.Scanner;
import java.io.File;
import java.util.ArrayList;

public class Ordliste {

private ArrayList<String> Ord = new ArrayList<String>();
private int teller = 0;


public void lesBok (String filnavn) throws Exception{
Scanner fil = new Scanner(new File(filnavn));
while(fil.hasNextLine()){
  Ord.add(fil.next());
} fil.close();
}

 public void leggTilOrd(String ord){
 if(Ord.contains(ord)){
  teller++;
  } if (!Ord.contains(ord)){
  Ord.add(ord);
  } System.out.println(teller);
  }
  }

3 个答案:

答案 0 :(得分:3)

您是否使用ArrayList?我建议使用Map<String, Integer>代替并将特定字符串的出现次数作为值存储在地图中:

if (map.get(ord) != null) {
  map.put(ord, map.get(ord) + 1);
}
else {
  map.put(ord, 1);
}

答案 1 :(得分:3)

您可以使用Set

跟踪列表中的字符串,而不是这样做
Set<String> set = new HashSet<String>();

public void leggTilOrd(String ord) {
    if (set.contains(ord) != null) {
        teller++;
    } else {
        Ord.add(ord);
        set.add(ord);
    }

    System.out.println(teller);
}

答案 2 :(得分:0)

仍然不确定您要完成的是什么,每次添加不同的单词时,是否增加teller

这是一种简单的方法来做我认为你正在尝试的事情,并且应该让你朝着正确的方向前进。

import java.util.Arrays;
import java.util.List;

public class test
{
  static int teller = 0;

  static List<String> words = Arrays.asList("dog", "cat", "dog");

  public static void main(String[] args)
  {
    System.out.println(teller);
    addAndCount("dog");
    System.out.println(teller);
    teller = 0;
    addAndCount("cat");
    System.out.println(teller);
    teller = 0;
    addAndCount("fish");
    System.out.println(teller);
  }

  public static void addAndCount(String newWord)
  {
    teller += 1 + Math.toIntExact(
        words.stream().filter(string -> newWord.equals(string)).count());
    words.add(newWord);
  }
}