
List1.txtの内容の単語の数を数え、その数を単語の隣に表示するプログラムを作りました。
(1)List1.txtの内容
ゲーム
ゲーム
麻雀
麻雀
野球
ゲーム
(2)実行結果
C:\>java Lists
ゲーム 3
野球 1
麻雀 2
(3)プログラム
import java.io.BufferedWriter;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.*;
public class Lists {
public static void main(String[] args) throws IOException{
File file3 = new File("C:\\List1.txt");
BufferedReader br3 = new BufferedReader(new FileReader(file3));
FileWriter filewriter3 = new FileWriter(file3,true);
TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
String line;
while((line = br3.readLine()) != null){
String[] words = line.split("\\s");
for(String s : words){
if(!tm.containsKey(s)){
tm.put(s,1);
}else{
tm.put(s,tm.get(s).intValue()+1);
}} }
for(String s : tm.keySet()){
System.out.println(s + " " + tm.get(s) );
}}}
このプログラムを上から単語の数が多い順に表示したいのですがどこをどう修正したらいいのか悩んでます。
C:\>java Lists
ゲーム 3
麻雀 2
野球 1
と表示されればOKです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Lists.java
import java.io.BufferedWriter;
import java.nio.charset.Charset;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.TreeMap;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import java.util.*;
public class Lists {
public static void main(String[] args) throws IOException{
File file3 = new File("C:\\List1.txt");
BufferedReader br3 = new BufferedReader(new FileReader(file3));
FileWriter filewriter3 = new FileWriter(file3,true);
TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
String line;
while((line = br3.readLine()) != null){
String[] words = line.split("\\s");
for(String s : words){
if(!tm.containsKey(s)){
tm.put(s,1);
}else{
tm.put(s,tm.get(s).intValue()+1);
}
}
}
for(String s : tm.keySet()){
System.out.println(s + " " + tm.get(s) );
}
TreeMap<String,String> tm2 = new TreeMap<String,String>(new ExmComparator());
for(String s : tm.keySet()){
tm2.put(tm.get(s)+" "+s," ");
}
for(String s : tm2.keySet()){
System.out.println(s);
}
}
}
ExmComparator.java
//降順に並べるためのコンパレータ
public class ExmComparator implements java.util.Comparator{
public int compare( Object object1, Object object2 ){
return ( (Comparable)object1 ).compareTo( object2 ) * -1;
}
}
結果
ゲーム 3
野球 1
麻雀 2
3 ゲーム
2 麻雀
1 野球
No.2
- 回答日時:
// 対象のマップ
Map<String,Integer> statistic = (中略);
// マップ要素で、配列を作成
List<Map.Entry<String,Integer>> data = new ArrayList<>(statistic.entrySet());
// 配列をソートして取得
Collections.sort(data, new Test());
for (Map.Entry<String,Integer> entry: data) {
System.out.printf("%4d %s\n", entry.getValue(), entry.getKey());
}
(中略)
// マップ要素の値で降順、となる比較関数
class Test implements Comparator<Map.Entry<String,Integer>> {
public int compare(Map.Entry<String,Integer> a, Map.Entry<String,Integer> b) {
return -(b.getValue() - a.getValue());
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
生年月日と今日の日付から年齢...
-
「例外 *** は対応する try 文...
-
半透明の画像
-
(急募)一覧画面表示がうまくい...
-
シャットダウンフックが呼ばれない
-
「配列定数は、イニシャライザ...
-
VBAで配列の計算
-
IF関数でEmpty値を設定する方法。
-
System.err. printlnとSystem.o...
-
重複なしでランダムに画像を表...
-
PSQLExceptionが発生する
-
flush()とclose()について
-
ORA-01858: 数値を指定する箇所...
-
JPanelの重ね方/OverlayLayout他
-
Javaプログラムについて質問で...
-
遅延バインディングを使用でき...
-
JAVA エラー 式の開始が不正で...
-
文字列の引き算
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
ColabでのPytorchのエラー
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
Selenium IDEでexportしたコー...
-
javaでアプレットの描画が出来ない
-
データの外挿について
-
ActionForm form にnullが入っ...
-
(急募)一覧表画面でパスワード...
-
(急募)一覧画面表示がうまくい...
-
(急募)「.csv」ファイルをテー...
-
Java での グローバルIP取得
-
シャットダウンフックが呼ばれない
-
GridBagLayoutについての質問
-
文字列を数式に
-
生年月日と今日の日付から年齢...
-
JTableでスクロールバーが表示...
-
干支の計算で。。。
-
Javaを使ってデジタル時計を作...
-
JAVA 乱数で同じ数字を出さな...
おすすめ情報