Возможно, я не правильно понимаю, но если все, что вам нужно сделать, это подсчитать количество отдельных слов в данном тексте в зависимости от того, где / как вы получаете слова, которые вам нужно считать из текста, вы можете использовать Java.Util.Scanner
, а затем добавьте слова в ArrayList
, и если слово уже существует в списке, не добавляйте его, и тогда размер списка будет равен количеству отдельных слов, как в примере ниже:
public ArrayList<String> makeWordList(){
Scanner scan = new Scanner(yourTextFileOrOtherTypeOfInput);
ArrayList<String> listOfWords = new ArrayList<String>();
String word = scan.next(); //scanner automatically uses " " as a delimeter
if(!listOfWords.contains(word)){ //add the word if it isn't added already
listOfWords.add(word);
}
return listOfWords; //return the list you made of distinct words
}
public int getDistinctWordCount(ArrayList<String> list){
return list.size();
}
Теперь, если вам действительно необходимо сначала посчитать количество символов в слове, прежде чем добавить его в список, вам нужно будет просто добавить несколько операторов, чтобы проверить длину строки слова, прежде чем добавлять ее в список. например:
if(word.length() <= someNumber){
//do whatever you need to
}
Извините, если я не понимаю вопроса и просто дал какой-то дерьмовый несвязанный ответ = P, но я надеюсь, что это поможет каким-то образом!
если вам нужно было отслеживать, как часто вы видите одно и то же слово, даже если вы хотите посчитать его только один раз, вы можете создать переменную, которая будет отслеживать эту частоту, и поместить ее в список таким образом, чтобы индекс Счетчик частоты совпадает с индексом в ArrayList, поэтому вы знаете, какому слову соответствует частота или лучше, но используйте HashMap
, где ключ - это отдельное слово, а значение - его частота (в основном используйте тот же код, что и выше. но вместо ArrayList используйте HashMap и добавьте некоторую переменную для подсчета частоты:
public HashMap<String, Integer> makeWordList(){
Scanner scan = new Scanner(yourTextFileOrOtherTypeOfInput);
HashMap<String, Integer> listOfWords = new HashMap<String, Integer>();
Scanner scan = new Scanner(sc);
while(cs.hasNext())
{
String word = scan.next(); //scanner automatically uses " " as a delimeter
int countWord = 0;
if(!listOfWords.containsKey(word))
{ //add word if it isn't added already
listOfWords.put(word, 1); //first occurance of this word
}
else
{
countWord = listOfWords.get(word) + 1; //get current count and increment
//now put the new value back in the HashMap
listOfWords.remove(word); //first remove it (can't have duplicate keys)
listOfWords.put(word, countWord); //now put it back with new value
}
}
return listOfWrods; //return the HashMap you made of distinct words
}
public int getDistinctWordCount(HashMap<String, Integer> list){
return list.size();
}
//get the frequency of the given word
public int getFrequencyForWord(String word, HashMap<String, Integer> list){
return list.get(word);
}