Calculating frequency of each word in a sentence in java

前端 未结 19 1967
夕颜
夕颜 2020-11-29 10:15

I am writing a very basic java program that calculates frequency of each word in a sentence so far i managed to do this much

import java.io.*;

class Linked         


        
相关标签:
19条回答
  • 2020-11-29 10:53
    import java.util.*;
    
    public class WordCounter {
    
        public static void main(String[] args) {
    
            String s = "this is a this is this a this yes this is a this what it may be i do not care about this";
            String a[] = s.split(" ");
            Map<String, Integer> words = new HashMap<>();
            for (String str : a) {
                if (words.containsKey(str)) {
                    words.put(str, 1 + words.get(str));
                } else {
                    words.put(str, 1);
                }
            }
            System.out.println(words);
        }
    }
    

    Output: {a=3, be=1, may=1, yes=1, this=7, about=1, i=1, is=3, it=1, do=1, not=1, what=1, care=1}

    0 讨论(0)
  • 2020-11-29 10:53
    package naresh.java;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Set;
    
    public class StringWordDuplicates {
    
        static void duplicate(String inputString){
    
            HashMap<String, Integer> wordCount = new HashMap<String,Integer>();
            String[] words = inputString.split(" ");
    
            for(String word : words){
                if(wordCount.containsKey(word)){
                    wordCount.put(word, wordCount.get(word)+1);             
                }
                else{
                    wordCount.put(word, 1);
                }
            }
            //Extracting of all keys of word count
            Set<String> wordsInString = wordCount.keySet();
    
            for(String word : wordsInString){
                if(wordCount.get(word)>1){
                    System.out.println(word+":"+wordCount.get(word));
                }
            }
    
        }
        public static void main(String args[]){
            duplicate("I am Java Programmer and IT Server Programmer with Java as Best Java lover");
    
        }
    }
    
    0 讨论(0)
  • 2020-11-29 10:56

    From Java 10 you can use the following:

    import java.util.Arrays;
    import java.util.stream.Collectors;
    
    public class StringFrequencyMap {
        public static void main(String... args){
            String[] wordArray = {"One", "One", "Two","Three", "Two", "two"};
            var freq = Arrays.stream(wordArray)
                             .collect(Collectors.groupingBy(x -> x, Collectors.counting()));
            System.out.println(freq);
        }
    }
    

    Output:

    {One=2, two=1, Two=2, Three=1}
    
    0 讨论(0)
  • 2020-11-29 10:56
        String s[]=st.split(" ");
        String sf[]=new String[s.length];
        int count[]=new int[s.length];
        sf[0]=s[0];
        int j=1;
        count[0]=1;
        for(int i=1;i<s.length;i++)
        {
            int t=j-1;
            while(t>=0)
            {
    
                if(s[i].equals(sf[t]))
                {
                    count[t]++;
                    break;
                }
                t--;
            }
            if(t<0)
            {
                sf[j]=s[i];
                count[j]++;
                j++;
            }
        }
    
    0 讨论(0)
  • 2020-11-29 10:57

    In Java 8, you can write this in two simple lines! In addition you can take advantage of parallel computing.

    Here's the most beautiful way to do this:

    Stream<String> stream = Stream.of(text.toLowerCase().split("\\W+")).parallel();
    
    Map<String, Long> wordFreq = stream
         .collect(Collectors.groupingBy(String::toString,Collectors.counting()));
    
    0 讨论(0)
  • 2020-11-29 10:58
    public class wordFrequency {
        private static Scanner scn;
    
        public static void countwords(String sent) {
            sent = sent.toLowerCase().replaceAll("[^a-z ]", "");
            ArrayList<String> arr = new ArrayList<String>();
            String[] sentarr = sent.split(" ");
            Map<String, Integer> a = new HashMap<String, Integer>();
            for (String word : sentarr) {
                arr.add(word);
            }
            for (String word : arr) {
                int count = Collections.frequency(arr, word);
                a.put(word, count);
            }
            for (String key : a.keySet()) {
                System.out.println(key + " = " + a.get(key));
            }
        }
    
        public static void main(String[] args) {
            scn = new Scanner(System.in);
            System.out.println("Enter sentence:");
            String inp = scn.nextLine();
            countwords(inp);
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题