私は、ファイル内の各単語の出現回数をカウントし、それらをマップに入力するためのJavaプログラムを実行しています。私はスレッドの概念を使用しています。スレッドがマップ内の単語と一致しないのはなぜですか?
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
class MyThread1 extends Thread
{
String word;
int len,position;
String[] wordlist;
MyThread1(String word, int len,int position, String[] wordlist)
{
this.word=word;
this.len=len;
this.position=position;
this.wordlist=wordlist;
}
public void run()
{
int i=position,y,count=0;
synchronized(this){
Map<String,Integer> m=new LinkedHashMap<String,Integer>();
if(m.containsKey(word))
{
System.out.println("Duplicate entry - bypassing it");
}
else{
y=i+1;
count=1;
for(int j=y;j<len;j++)
{
if(word.equals(wordlist[j]))
count++;
}
/* if(m.containsKey(word))
{
int l=m.get(word);
System.out.println("word is "+word);
System.out.println("existing count "+l);
System.out.println("current count "+count);
if(l>count)
{
m.put(word, l);
}
else
{
m.put(word,count);
}
} */
m.put(word,count);
count=0;
}
for(Map.Entry<String,Integer> me:m.entrySet())
{
System.out.println(me.getKey()+" "+me.getValue());
}
}
}
}
public class UsingThread
{
public static void main (String args[]) throws IOException
{
File f1=new File("C:/Users/sahithim/Desktop/file1.txt");
FileReader fr=null;
int x;
String s="",eachEntry="";
try {
fr=new FileReader(f1);
while((x=fr.read())!=-1)
{
s=s+(char)x;
}
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
finally
{
fr.close();
}
String[] wordArray=s.split(" ");
int num_0f_words=wordArray.length;
for(int i=0;i<num_0f_words;i++)
{
eachEntry=wordArray[i];
MyThread1 mt1=new MyThread1(eachEntry,num_0f_words,i,wordArray);
mt1.start();
}
}
}
これは私が各単語をスレッドに送り、その存在を地図で確認しています。たとえ単語が地図に存在しても、それを認識していません。
私は私がやっている間違いですこれは何
hello 6
this 6
hey 24
1
is 6
pallavi 6
nalam 6
hey 23
hey 22
hey 21
sahithi
6
i 12
am 6
good 6
i 11
love 6
flowers
6
6
hey 20
hello 5
this 5
is 5
pallavi 5
nalam 5
hey 19
hey 18
hey 17
sahithi
5
am 5
i 10
good 5
i 9
love 5
5
flowers
5
hey 16
1
flowers
1
is 4
i 1
this 4
good 1
1
am 1
love 1
sahithi
1
i 2
hey 2
hey 1
i 4
i 3
nalam 1
this 1
is 1
hey 4
hello 1
love 2
2
am 2
flowers
2
good 2
hey 5
sahithi
2
hey 7
hey 6
nalam 2
pallavi 2
is 2
this 2
hey 8
love 3
i 5
3
am 3
sahithi
3
hello 2
nalam 3
hey 11
pallavi 3
this 3
hello 3
hey 10
hey 9
i 6
good 3
flowers
3
pallavi 1
hey 3
hello 4
pallavi 4
nalam 4
hey 15
hey 14
sahithi
4
hey 13
i 8
am 4
good 4
4
i 7
love 4
hey 12
flowers
4
is 3
のようないくつかのことを印刷している。この
hey 24
hello 6
this 6
is 6
pallavi 6
nalam 6
sahithi
6
i 12
am 6
good 6
love 6
flowers 6
のような出力を期待していますか?必要な出力を得るには?
これは疑問ではありませんが、他人がコードを書くことを求めるリクエストです。単語ごとに1つのスレッドではなく、単語の出現ごとに1つのスレッドを開始します。 – tkruse
@tkruse私は自分の仕事を他の人に任せるつもりはない。私はコードを修正し、必要な出力を得ました。 – sahithi