2012-01-18 19 views
2

リストには、整数値と文字列値の両方が含まれることがあります。この場合、オブジェクトリストを作成する必要がありますか?オブジェクトのリスト。整数エントリの操作

List<Object> list = new ArrayList<Object>(); 

リストの整数エントリを使って簡単な算術演算を実行するにはどうすればよいですか?

list.add(1); 
list.add("ok"); 
list.add(2); 
Integer a = list.get(0) - list.get(2); // does not work 
+2

なぜ2つのリストがありますか?1つはint、もう1つはStringsですか? –

+0

私はあなたの考えが好きです、これを試してみるのはとても自然なようです。 Javaでオートボクシングの問題の私のリストにまっすぐ行く。 – x4u

+0

@ Victor Sorokin:文字列と整数だけの場合、良い解決策になります。実際には、より多くのタイプが存在する可能性があります。そのため、私はコード内に高水準のジェネリックを保つ必要があります。 –

答えて

5

-オペレータがObject Sに定義されていないとJavaは自動的にこれらのVHS版はありませんので、あなたは、intにObject秒をキャストする必要があります。最終的に、list.get(0);Objectですのでです

Integer a = ((Integer)list.get(0)) - ((Integer)list.get(2)); 
+0

ちょっと、私はアップフォートの代わりにあなたの投稿にdownvoteをしたようです。私はこれを元に戻すことができるように小さな編集を行うことができますか? –

+0

@Milad Naseri私はあなたの正直を感謝します:-)そこに行きます。ありがとう! – Matten

+0

完了。ご迷惑おかけして申し訳ありません。私はちょうど不注意だった:) –

5

。あなたは、あなたがそれに算術演算を実行したい場合は、それをキャストする必要があります。

Integer a = (Integer) list.get(0) - (Integer) list.get(2); 
1

これは正直に言うと、本当に悪いデザインです。もしあなたがそのリストを反復したいのであれば?要素が文字列か整数かを手動で確認する必要があります。ジェネリックはJavaの理由から導入されました。

文字列用と整数用の2つのリストを作成できません。または、少なくとも1つのリストを使用しますが、文字列を使用する代わりに(通常は未使用の)整数値を使用しますか?

+0

残念ながら私はこれを行うことはできません。私はDBからデータを読み込んでいますが、いくつかの具体的な理由からこれらのデータを単一のリストに保存する必要があります。 –

+0

私たちが気づいていない細部があるかもしれないと私は理解します。それでも、私はこのシステムを少なくとも試してリファクタリングすることをお勧めします。さもなければ、それは毎日の技術的な負債を増加させるだけの時限爆弾になるでしょう。 –