• 締切済み

LabelValueBeanで作成したリストの重複を削除したい

まともにコーディングしたこともないJAVA初心者です。 LabelValueBeanで作成したリストの重複を削除したいのですが、方法がわかりません。 例えば下記のようなプログラム labels.add(new LabelValueBean("select","0")); for(int count = 0 ; count<data.size() ; count++){ TestResultBean row = (TestResultBean)data.get(count); labels.add(new LabelValueBean(row.getRonten_nm(),row.getRonten_cd().toString())); } において、このままだと select,0 AA,1 AB,2 AC,3 AA,1 AA,1 AA,1 AB,2 AD,4 こう排出されてしまうのに対して select,0 AA,0 AB,0 AC,0 AD,0 と返してほしいのです。 問題解決にご協力をお願いします。

みんなの回答

  • hoge_piyo
  • ベストアンサー率57% (15/26)
回答No.1

labels の現在の型はなんでしょうか? そもそも最初から重複が必要ないなら、そのLabelValueBeanを格納するコレクションの型を 1.Setを継承した型にする(ふつうは、HashSet、順番を考慮するならTreeSet、など) 2.格納するクラス(この場合はLabelValueBean)ではequalsメソッドを必要に応じてオーバーライドする というのがJavaでの基本的なやり方です。 このコードだけではLabelValueBeanをどう使いたいのかがいまいち分かりませんが、LabelValueBeanのequalsの実装はlabelが一致しなくてもvalueが一致したらtrueを返しているようです。 なのでもし、labelとvalueの両方が一致した場合のみ同じオブジェクトとみなしたいなら、オーバーライドする必要があります。 http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Set.html あとは、出力するときに重複したものを除くという事も考えられますが・・・この labelsというオブジェクトをどう使うのかによるので、なんともいえません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MATCH LARGE などで重複を防ぐには

    いつもお世話になります。 WIN7 EXCELL2010 です。 次のような問題点があります。 シート「記入」から シート「月別」AC列 AD列を作業列に。 この時、例えば シート「月別」AD6 AD7 に同じ金額の20,000があり Z5 Z6 に「佐々木」が重複し 「星野」が表示されません。 これを防ぐ方法で何かいい解決策はありませんでしょうか。 ご指導いただければ幸甚です。 よろしくお願いします。 参考 Y4 =IF(OR(記入!C2="",AA2=0),"",COUNTA(記入!$C$2:$C2)) Z4 =IF(COUNTIF($AC$4:$AC$100,"?*")<ROW(G1),"",INDEX(AC$4:AC$100,MATCH(LARGE($AD$4:$AD$100,ROW(G1)),$AD$4:$AD$100,0))) AA4 =IF(AC4="","",SUMIF($AC$3:$AC$100,Z4,$AD$3:$AD$100)) AC4 =IF(COUNT(記入!$G$1:$G$3000)<ROW($A1),"",INDEX(記入!$C$1:$C$3000,SMALL(記入!G$1:G$3000,ROW(A1)))) AD4 =IF(AC4="","",SUMPRODUCT((記入!$B$2:$B$3000>=DATEVALUE($AB$2))*(記入!$B$2:$B$3000<DATEVALUE($AH$2))*(記入!$C$2:$C$3000=AC4),記入!$D$2:$D$3000))

  • 関数をVBAで知りたい

    300ぐらいのセルに関数で計算をしているのですが、時間がかかって仕方ありません。次の関数をVBAに直して頂けませんか 質問1:表示したいセルはRange("AD98")です =IF(AND(COUNT(OFFSET(AC98,1-AD$8,0):AC98)<>AD$8),"",IF(AND(COUNT(OFFSET(AC98,1-AD$8,0):AC98=AD$8,AD97=""),AVERAGE(OFFSET(AC98,1-AD$8,0):AC98),IF(COUNT(AD97=1),AD97+2/(AD$8+1)*(AC98-AD97)))) 質問2:表示したいセルはRange("AC98")です =IF(AND(COUNT(AA98)=1,COUNT(AB98)=1),AA98-AB98,"") よろしくお願いします

  • データの抽出

    お願いします。 Sheet1のデータからSheet2にリストされている顧客のデータだけをSheet3に出したいです。 毎月Sheet1のデータが変わりますので、新しいデータを貼り付けるたびに、Sheet3に反映させる方法があればお願いします。実際のデータの量は膨大です。 簡単な方法でお願いします。 初心者なのでむずかしい事ははわかりません。すいません。 Sheet1 顧客  数  年        AA 5 2008 AA 6 2009 AB 10 2009 AB 18 2010 AC 33 2008 AC 40 2009 AC 31 2010 AD 1 2009 AD 3 2010 Sheet2 AA AC Sheet3 AA 5 2008 AA 6 2009 AC 33 2008 AC 40 2009 AC 31 2010

  • 検索結果の数について

    前回も質問をしたのですが、html、php、MySQLを使い現在検索システムの作成の練習をしているのですが、やりたいのは、phpでMySQLからデータを呼び出し、htmlで文字を記入して合致しているものを検索して表示し、検索結果数(何件表示されました)を表示するというものを作りたいと思っています。 検索してデータを表示させるということはできたのですが、検索結果数を表示することができません。 count()を使えば一発でできるという助言をいただきましたが調べてもよく分かりませんでした。 [php] <?php $add = $_GET["add"]; $nm = $_GET["nm"]; $server = "xxxxxx"; $dbname = "xxxxxx"; $user = "xxxxx"; $passwd = "xxxxxx"; $sv = mysql_connect($server, $user, $passwd) or die("Connection err1"); $db = mysql_select_db($dbname) or die("Connection error2"); $rows = mysql_query("SELECT * FROM `table1` WHERE add ='$add' or `nm` LIKE N'%nm'"); if($rows > 0){ $out = ""; while ($row = mysql_fetch_array($rows)){ $out .= $row['add']."<i>"; $out .= $row['nm']."<i>"; $out .= "<r>"; } echo $out; }else { echo "参照不成功:nm = ".nm; } mysql_close($sv); ?> phpについてもsqlについてもあまり知識がないのですが、よろしくお願いします。

    • ベストアンサー
    • PHP
  • Oracleでルールベースでの複合索引

    数十万件のデータをバッチ処理を行っているのですが、パフォーマンスが悪く困っています。 その原因となりそうな部分について質問します。 テーブルAに複合索引を作ります。 create unique index uk_A on A(AA,AB,AC,AD); このテーブルに検索をかけます。そのときにWhere句に書く列の順序は、パフォーマンスには関係ないのでしょうか? select max(AD) from A where AA=1 and AB=2 and AC=3; としたときと select max(AD) from A where AC=3 and AB=2 and AA=1; としたときの、パフォーマンスの違いです。 このバッチ処理の中で、Aのテーブルに多数のデータを追加するために、コストベースにはできません。また、このSQL文は、プロシージャの中で使用しています。 範囲検索の場合のことは、講習でもあったのですが、等価結合のことは出てきませんでした。 どなたかご存知の方宜しくお願いします。

  • 重複データの集計方法を教えてください。

    テーブル名:テスト コード SEQ 0001  1 0001  2 0001  3 0002  1 0002  2 0002  3 0003  1 0003  2 0003  3 0003  4 0003  5 0003  6 0003  7 0003  8 0004  1 0004  2 0005  1 0005  2 0005  3 0005  4 0005  5 0005  6 0005  7 0005  8 0006  1 0006  2 0007  1 0007  2 こういったデータのテーブルがあります。 そこで、「コード」の重複件数が6件以下の データを集計したいのです。 これで、重複したコードの件数がでると思うのですが、 SELECT COUNT(コード) FROM テスト GROUP BY コード こういうイメージです。 3 3 8 2 8 2 2 6より多いデータは、6にして、それ以外のデータはそのままの値にしたいのです。 CASE WHEN aa > 6 THEN '6' ELSE aa END 上で書いたSELECTの結果を上記のCASEで使いたいのですが、 どのように記述すればよいのでしょうか? 下記のようにしてもうまくいきませんでした。 SELECT CASE WHEN aa > 6 THEN '6' ELSE aa END FROM (SELECT COUNT(コード) FROM テスト GROUP BY コード) as aa 最終的には、 3 3 6 2 6 2 2 となったものの合計を出したいです。 24がでればいいです。 よろしくお願いします。

  • VBAの事で・・。

    お世話になります。 VBAの初心者なのですが、どう記述したら良いのか分からなく、 自分であれこれ考えながら記述すると、エラーばかり出でしまいます。 どなたかお教え頂きたいのですが、内容は下記になります。 下記の様なデータがあり、種類事の合計値を右下にある種類名の下 に合計結果を貼付たく、実際は何千行とあり、種類の行数も一定では ない為、オートフィルタを使い、また合計はSUBTOTALで、 出し、それをコピーして右下の同種類の下へ貼付していたのですが、 何十回もする作業なので、VBAで出来ないかと思考錯誤しており ましたが私には高度すぎて出来ませんでした。 宜しくお願い申し上げます。 種類   数量 AA   225 AA    53 AA   677 AB    43 AB   680 AC    97 AC    65 AC    23 AC    55 AC  6778 AD    34 AD   656 AD   342 AE    98 AE 45627 AE  8078 AE    28           AA   AB   AC   AD   AE      

  • エクセルの関数について

    下記のようなことが関数で出来ますか? A1セルに「AA AB AC AD AE」というデータがあったときに、 B1に、A1に「AB」か「AC」という文字列があればそれを取り出す。なければブランク(もしくは#N/A) かつ優先順位もつけたい。 (「AB」も「AC」もある場合は「AB」) 「AA」と「AB」の間など、文字間は必ず半角スペースがあいている状態です。 具体的な例は↓の画像のような感じです。 かなり高度だと思うんですが、関数で実現できますでしょうか? よろしくお願いします。

  • DataSet(DataTable)の使い方

    GridViewやListViewなどに動的にデータを追加していきたいので、 DataTableを使おうと思いました。 下記、(1)のようにPageLoadイベントで1行追加することはできたのですが、 ボタンを押すごとに、1行ずつ追加していきたいので(2)のように修正したのですが、 ボタンを押したときのポストバックで、DataSetもDataTableもnullになってしまい、 行の追加ができません。 ボタンを押すごとにどんどん行を追加していきたいのですが、このような場合は どのようにDataSetもDataTableを保持しておけば良いのでしょうか。 (1) public partial class WebForm1 : System.Web.UI.Page { int count = 0; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataSet dS = new DataSet("dS"); DataTable dT = new DataTable("dT"); // データテーブル カラム作成 dT.Columns.Add("no", typeof(int)); dT.Columns.Add("name", typeof(string)); dT.Columns.Add("kind", typeof(string)); dT.Columns.Add("time", typeof(int)); dS.Tables.Add(dT); DataRow dR = dT.NewRow(); dR["no"] = count; dR["name"] = count.ToString(); dR["kind"] = count.ToString(); dR["time"] = count; dT.Rows.Add(dR); // リストビュー データソース選択 ListView2.DataSource = dS; ListView2.DataBind(); } } } (2) public partial class WebForm2 : System.Web.UI.Page { int count = 0; DataSet dS; DataTable dT; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { dS = new DataSet("dS"); dT = new DataTable("dT"); // データテーブル カラム作成 dT.Columns.Add("no", typeof(int)); dT.Columns.Add("name", typeof(string)); dT.Columns.Add("kind", typeof(string)); dT.Columns.Add("time", typeof(int)); dS.Tables.Add(dT); } } protected void Button1_Click(object sender, EventArgs e) { count = count + 1; DataRow dR = dT.NewRow(); dR["no"] = count; dR["name"] = count.ToString(); dR["kind"] = count.ToString(); dR["time"] = count; dT.Rows.Add(dR); // リストビュー データソース選択 ListView2.DataSource = dS; ListView2.DataBind(); } }

  • PHP javascript の関係に関して

    現在、MySQLよりPHPを用いてデータを取得し、PHPのある変数にデータを格納しています。 その結果を、javascriptの中でデータとして使用したいと考えていますが、そもそもPHPで格納されている変数をjavascriptの中で使用する事は可能なのでしょうか。。。 //例ですが、   $sql = "select aaa from AAA"; if (!mysql_select_db('db', $con)) { echo 'Could not select database'; exit; } mysql_query("set names sjis"); $result = mysql_query($sql,$con); $row = mysql_num_rows($result); $count = 1; for($i=0;$i<$row;$i++) { $array = mysql_fetch_array($result); $tmp_aaa[$count] = $array[0]; $count++; } <script type="text/javascript"> <!-- msgtxt = new Array(); for (i=0; i<3; i++){ msgtxt[i] = new Array(); } $count = 0; for($i=0;$i<$row_naiyou;$i++) { $msgtxt[$count] = $tmp_aaa[$count]; $count++; } というような形です。 javascript自体、php> ?>の中に囲まれていれば問題ないのでしょうか? 初歩的な質問で申し訳ありませんが、教えて下さい。

    • 締切済み
    • PHP
NintendoSwitchがWiFi繋がらない
このQ&Aのポイント
  • NintendoSwitchのWiFi接続がうまくいかない場合の対処方法について説明します。
  • NintendoSwitchのWiFi接続トラブルの解決方法についてまとめました。
  • NintendoSwitchのWiFi接続ができない場合の対処法について解説します。
回答を見る