
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で質問しましょう!
似たような質問が見つかりました
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- オープンソース Flaskでサーバー立ち上げに関して 1 2023/08/12 21:02
- Java Java 配列<選挙> 4 2023/07/31 15:07
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- Ruby 教えてください 2 2023/01/04 17:50
- Java マイクラでPythonのプログラミングができません 3 2023/05/28 07:15
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- Java Javaの問題なのですが、「3文字以上の英数字文字列を入力し、文字列の中に文字(9)が出てくるまでの 1 2023/06/06 18:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jdbcでinsert,delete,createをe...
-
プログラミングの問題です。大...
-
Googleログインボタンのデザイ...
-
JDONWROADER2のエラー修復
-
「main メソッドを持つクラスが...
-
Eclipse 動的プロジェクトで404...
-
正規表現について質問です。 カ...
-
スプレッドシートからリマイン...
-
googleスプレッドシートのスク...
-
googleスプレッドシートのGASに...
-
Verilogについて質問です。この...
-
論理回路設計をVerilogで行う問...
-
ゲーム開発の入門書を探しています
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JDONWROADER2のエラー修復
-
Googleログインボタンのデザイ...
-
配列にnullを代入すると、null...
-
jdbcでinsert,delete,createをe...
-
「main メソッドを持つクラスが...
-
プログラミングの問題です。大...
-
eclipseで作ったプログラムを他...
-
正規表現について質問です。 カ...
-
Eclipse 動的プロジェクトで404...
-
マイクラでPythonのプログラミ...
-
jdk17.06のインストーラーが起...
-
自作Androidアプリのデータ引き...
-
直し方について教えて頂きたい...
-
eclipse実行ができない
-
サーブレットをapacheで公開す...
-
あんまりお料理しないのに台所...
-
CSV出力を画面から選択したデー...
-
次のhtml・cssでspan内の文字を...
-
問題作成のWebアプリの作り方を...
-
ゲーム開発の入門書を探しています
おすすめ情報