- ベストアンサー
配列を大きい順にソートする方法
- 配列を大きい順にソートする方法を教えてください。
- for文でlengthを求め、c.intValue()で表示する場合の具体的なソースコードを教えてください。
- HashMapを使用して配列の要素を数え、数が大きい順に表示する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- ngsvx
- ベストアンサー率49% (157/315)
関連するQ&A
- Java。以下のソースをご覧下さい。
配列ですが、現在の一覧表示を上位10件で表示したいのですが、教わって書いたソースのため、どう手をくわえればいいか分かりません・・・ ご教示お願いします。 //以下ソースです。ほぼ表示ロジックのみですが、足りなければ別途追記致します。 <前略> Iterator<String> ir = hsFlow.keySet().iterator(); while(ir.hasNext()){ ArrayList<Map.Entry<String,Integer>> list = new ArrayList<Map.Entry<String,Integer>>(); list.addAll((new HashMap<String,Integer>(hsFlow)).entrySet()); Collections.sort(list,Collections.reverseOrder(new SampleSorter())); for(Map.Entry<String,Integer> m:list){ System.out.println(m.getKey()); System.out.println(m.getValue()); String f = ir.next(); Integer c = hsFlow.get(f); if(c==null) c = new Integer(0); System.out.println("回数"+f+":"+c.intValue()+"回"); //この回数表示の部分で回数の多い上位10件のみの表示にしたいと思っています。
- ベストアンサー
- Java
- サーブレットで表を表示しましたが、上手くいきません
まず、ソースコードです。 PrintWriter out=response.getWriter(); out.print("<table border='1'>"); out.print("<tr><td>"+"行き先"+"</td><td>"+"目的地"+"</td><td>"+"回数"+"</td></tr>"); Iterator<String> ir = hsFlow.keySet().iterator(); while(ir.hasNext()){ String f = ir.next(); Integer c = hsFlow.get(f); if(c==null) c = new Integer(0); out.print("<tr><td>"+f+"</td><td>"+c.intValue()+"回"+"</td><td></tr>"); out.print("<table>"); } <<質問>> プログラムは、複数ある場所の行き来の回数を表示するものです。 そこで、 out.print("<tr><td>"+"行き先"+"</td><td>"+"目的地"+"</td><td>"+"回数"+"</td></tr>"); を見出しに、 out.print("<tr><td>"+f+"</td><td>"+c.intValue()+"回"+"</td><td></tr>"); をデータとして、表示したいのですが、きれいな表を作れません。 分かっていますが、テーブルをwhile(ir.hasNext()){の外に出し見出しを設置すると、最初のデータしか表に入らないで、2つ目以降のデータは表の外に出されてしまいます。 (一つの表で綺麗に表示したいのに、1行ごとに表が閉じられてしまいます。) どうすれば綺麗な表を作れるでしょうか。 なお、JTableの使用は難しいので考えていません。(Java初心者です) あくまで、out.printで表示したいと思います。 ご回答よろしくお願いします。
- ベストアンサー
- Java
- mapの値を全件取得
いつも楽しく拝見させて頂いています。 mapオブジェクトをkeyの昇順でソートし、昇順でソートされた順にmapのvalueを取得したいって思ってます。 下記ソースで方針はあってますでしょうか? しかし下記ソースを実行すると※の行でClassCastExceptionが発生します。 String型にキャストしているつもりなのですが…なぜでしょうか? 初歩的な質問ですが宜しくお願いします。 ----------------------------------------以下ソース Map map = new TreeMap(); map.put(new Integer("12"), "000000000b"); map.put(new Integer("78"), "000000000a"); map.put(new Integer("39"), "000000000c"); map.put(new Integer("234"), "000000000g"); for(Iterator iterator = map.entrySet().iterator();iterator.hasNext();) { Map.Entry entry = (Map.Entry)iterator.next(); ※ String key = (String)entry.getKey(); String value = (String)entry.getValue(); System.out.println(key + "=" + value); } ・Jdk1.4.12 ・eclipse 3.0
- ベストアンサー
- Java
- TreeMapで昇順ソートされない
TreeMapで昇順ソートをさせようと思って以下のサンプルプログラムを作成しました。 ところが結果は予想に反して108,28,3,608,8 というようにランダムに数値が表示されました。 put するときに mapRecordNumKind.put(108, "あ"); というようにkeyをintにしてみたところ昇順に表示させることができました。 インターネットで見たサンプルではkeyの数値をStringでputしていたのですが そもそも参照したページが誤っていてTreeMapはString型の数値では昇順ソートされないもの なのでしょうか。 TreeMap<String,String> mapRecordNumKind = new TreeMap<String,String>(); mapRecordNumKind.put("108", "あ"); mapRecordNumKind.put("3", "い"); mapRecordNumKind.put("8", "う"); mapRecordNumKind.put("28", "え"); mapRecordNumKind.put("608", "お"); Iterator<String> its = mapRecordNumKind.keySet().iterator(); while(its.hasNext()) { String key = its.next(); System.out.println(key); }
- ベストアンサー
- Java
- サブクラスの内容をサーバで表示したいです
まず、<jsp:include flush="true" page="/servlet/page.Sflow1"/>を使い jspでサーブレットを表示しています。 サーブレットではサブクラスを使用していますが、そのサブクラスの内容をサーバで表示するにはどうすればいいでしょうか。 以下、そのソースです。 ・・・・ public class Sflow1 extends HttpServlet{ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sql="select id,c_id,barcode from Flow order by id,c_id,date"; System.out.println("sql="+sql); //中略 HashMap<String,Keiro> hsFlow = new HashMap<String,Keiro>(); String idbk=""; String flowbk=null; while(rs.next()){ String id=rs.getString(1)+":"+rs.getString(2); String flow=rs.getString(3); if(id.equals(idbk)){ if(flowbk!=null){Keiro keiro=hsFlow.get(flowbk);if(keiro == null) keiro = new Keiro(); keiro.addKeiro(flow); hsFlow.put(flowbk,keiro); } } idbk = id; flowbk = flow; } PrintWriter out=response.getWriter(); Object maekeiro[]=hsFlow.keySet().toArray(); Arrays.sort(maekeiro); for(int i=0;i<maekeiro.length;i++){ System.out.println(maekeiro[i]+"からの動き"); hsFlow.get(maekeiro[i]).viewData(); out.println(maekeiro[i]+"からの動き"); } } //中略 class Keiro{ private HashMap<String,Integer> hsNext = new HashMap<String,Integer>(); private int soukei = 0; public void addKeiro(String atokeiro){ Integer i = hsNext.get(atokeiro); if (i==null) i=new Integer(0); hsNext.put(atokeiro,new Integer(i.intValue()+1)); soukei++; } public void viewData(){ Object atokeiro[]=hsNext.keySet().toArray(); Arrays.sort(atokeiro); for(int i=0;i<atokeiro.length;i++){ System.out.println("→"+atokeiro[i]+" "+(hsNext.get(atokeiro[i]).intValue()*100/soukei)+"%"); //このSystem.out.println(・・・)の部分をサーバで表示したいです。 } } } どうすれば標準出力(System.out.println)で表示した内容をそのままサーバに送れるのでしょうか? サーブレットを宣言できないのでレスポンスできず・・・ 具体的なソース等ご教示お願いいたします。
- ベストアンサー
- Java
- サーブレット Java
サブクラス(内部クラス?)の内容をサーバで表示したいです 一度、同じ質問をしましたが解決できず、再質問いたしました。 ご回答よろしくお願いします。 まず、<jsp:include flush="true" page="/servlet/page.Sflow1"/>を使い jspでサーブレットを表示しています。 サーブレットではサブクラスを使用していますが、そのサブクラスの内容をサーバで表示するにはどうすればいいでしょうか。 以下、そのソースです。 ・・・・ public class Sflow1 extends HttpServlet{ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sql="select id,c_id,barcode from Flow order by id,c_id,date"; System.out.println("sql="+sql); //中略 HashMap<String,Keiro> hsFlow = new HashMap<String,Keiro>(); String idbk=""; String flowbk=null; while(rs.next()){ String id=rs.getString(1)+":"+rs.getString(2); String flow=rs.getString(3); if(id.equals(idbk)){ if(flowbk!=null){Keiro keiro=hsFlow.get(flowbk);if(keiro == null) keiro = new Keiro(); keiro.addKeiro(flow); hsFlow.put(flowbk,keiro); } } idbk = id; flowbk = flow; } PrintWriter out=response.getWriter(); Object maekeiro[]=hsFlow.keySet().toArray(); Arrays.sort(maekeiro); for(int i=0;i<maekeiro.length;i++){ System.out.println(maekeiro[i]+"からの動き"); hsFlow.get(maekeiro[i]).viewData(); out.println(maekeiro[i]+"からの動き"); } } //中略 class Keiro{ private HashMap<String,Integer> hsNext = new HashMap<String,Integer>(); private int soukei = 0; public void addKeiro(String atokeiro){ Integer i = hsNext.get(atokeiro); if (i==null) i=new Integer(0); hsNext.put(atokeiro,new Integer(i.intValue()+1)); soukei++; } public void viewData(){ Object atokeiro[]=hsNext.keySet().toArray(); Arrays.sort(atokeiro); for(int i=0;i<atokeiro.length;i++){ System.out.println("→"+atokeiro[i]+" "+(hsNext.get(atokeiro[i]).intValue()*100/soukei)+"%"); //このSystem.out.println(・・・)の部分をサーバで表示したいです。 } } } どうすれば標準出力(System.out.println)で表示した内容をサーバで表示することができるのでしょうか? サーブレットを宣言できないのでレスポンスできず・・・(そもそもサブクラスでサーブレットは宣言できるのですか?) 具体的なソース等ご教示お願いいたします。
- ベストアンサー
- Java
- JAVA 二分探索木トラバーサルのコンパイル時警告
下記のTreeMaptest01.javaをコンパイルした時、次のような警告が出ます。 この警告が出ないようにする方法を教えてください。 よろしくお願いします。 % javac -Xlint:unchecked TreeMaptest01.java TreeMaptest01.java:92: 警告:[unchecked] 無検査変換です 検出値 : decorder 期待値 : java.util.Comparator<? super java.lang.String> TreeMap<String,String> s = new TreeMap<String,String>(new decorder()); ^ 警告 1 個 /*=========TreeMaptest01.java=========================================== import java.util.*; class decorder implements Comparator { public int compare(Object obj1, Object obj2) { int c = ((String)obj1).compareTo((String)obj2); return -c; } } class TreeMaptest01 { public static void main(String args[]) { // 空のマップを作成。 TreeMap<String,String> tm = new TreeMap<String,String>(); // キーと値の組を追加。 tm.put("C","Car"); tm.put("A","Airplane"); tm.put("B","Book"); tm.put("E","Earth"); tm.put("D","Door"); // キーと値のすべての組を昇順にたどる。 System.out.println("キーと値のすべての組を昇順にたどる"); Set a = (Set)(tm.keySet()); Iterator ia = a.iterator(); while( ia.hasNext() ) { Object key = ia.next(); System.out.println("キー:" + key + " 値:" + (String)tm.get(key)); } System.out.println(); // 空のマップを作成。 // ここでエラー(警告が出る) TreeMap<String,String> s = new TreeMap<String,String>(new decorder()); // キーと値の組を追加。 s.put("C","Car"); s.put("A","Airplane"); s.put("B","Book"); s.put("E","Earth"); s.put("D","Door"); // キーと値のすべての組を降順にたどる。 System.out.println("キーと値のすべての組を降順にたどる"); Set b = (Set)(s.keySet()); Iterator ib = b.iterator(); while( ib.hasNext() ) { Object key = ib.next(); System.out.println("キー:" + key + " 値:" + (String)s.get(key)); } } } =======================================================================*/
- 締切済み
- Java
- エラーの訂正でアドバイスください。
javaプログラミング超初心者です import java.io.*; public class ex22b { public static void main(String[] arg) { System.out.print("x: "); int x = (new Integer (in.readLine())). intValue(); System.out.print("y: "); int y = (new Integer (in.readLine())). intValue(); int a; while (y > 0) { a = a + x; System.out.println("kekka = " + a); System.out.println("y = " + y); y = y - 1; } System.out.println("乗算結果は " + a); } } というソースを書いたら、コンパイルの際に シンボルを見つけられません シンボル:変数 in 場所 :ex22bのクラス int x = (new Integer (in.readLine())). intValue(); ^ int y = (new Integer (in.readLine())). intValue(); ^ というエラーが出ました。 どこをどう直したらいいのでしょうか。
- ベストアンサー
- Java
- java.util.Comparatorのcompareメソッドの振る舞いについて
はじめまして。 質問をさせていただきます。 以下のソースで、 =============================================================== import java.util.Comparator; import java.util.TreeSet; import java.util.Iterator; final class Demo { public static void main(String[] args) { TreeSet<Integer> set = new TreeSet<Integer>(new Comparator<Integer>() { public int compare(Integer i,Integer j) { int result = i%2 - j%2; if(result==0) { result = i-j; } return result; } }); for(int i=0;i<10;i++) { set.add(10-i); } Iterator<Integer> it = set.iterator(); while(it.hasNext()) { System.out.println((Integer)it.next()); } } } ================================================================ 実行結果 ================================================================ 2 4 6 8 10 1 3 5 7 9 ================================================================ 偶数が最初に昇順で出力され、奇数が後から昇順で出力されている のですが、なぜこのような実行結果になるのかがわかりません。 どうかご教授お願いします。
- ベストアンサー
- Java
- java のMAPをソートするとき
以下のプログラムがあったとします、 Map<Integer, String> map = new HashMap<Integer, String>(); map.put( 0 , "abc" ); map.put( 4 , "efg" ); map.put( 1 , "hij" ); map.put( 3 , "klm" ); map.put( 2 , "npo" ); これで、mapのキーをソートするにはどうしたらいいでしょうか?
- ベストアンサー
- Java
お礼
とても分かりやすく、無事大きい順でソートすることが出来ました。 ご回答ありがとうございました。