該列表可能包含整數和字符串值。在這種情況下,我應該創建對象列表嗎?對象列表。整數條目操作
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
該列表可能包含整數和字符串值。在這種情況下,我應該創建對象列表嗎?對象列表。整數條目操作
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
你需要轉換Object
s到INT,因爲-
經營者不得在Object
已定義和Java不會自動拆箱這些。
Integer a = ((Integer)list.get(0)) - ((Integer)list.get(2));
嘿,看來我對你的帖子做了downvote而不是upvote。你可以做一個小的編輯,以便我可以撤銷這個? – 2012-01-18 13:35:30
@Milad Naseri我感謝你的誠實:-)你去。謝謝! – Matten 2012-01-18 13:39:04
完成。抱歉,添麻煩了。我只是不小心:) – 2012-01-18 16:16:19
這是因爲最終list.get(0);
是Object
。如果你想對它進行算術運算,你必須施放它:
Integer a = (Integer) list.get(0) - (Integer) list.get(2);
這是一個非常糟糕的設計說實話。如果你想遍歷這個列表呢?您將不得不手動檢查元素是字符串還是整數。出於某種原因引入Java的泛型。
你不能製作2個列表:一個用於字符串,一個用於整數。或者至少使用一個列表,但不使用字符串使用(通常未使用的)整數值?
不,我不能這樣做。我正在讀取數據庫中的數據,由於某些特定原因,我需要將這些數據保存在一個列表中。 – 2012-01-18 12:50:33
我瞭解可能有一些我們不知道的細節。儘管如此,我還是鼓勵你至少嘗試並重構這一系統。否則,這將是一個定時炸彈,每天只會增加技術債務。 – 2012-01-18 13:35:15
爲什麼你不能有2個列表:一個用於整數,另一個用於字符串? – 2012-01-18 12:11:50
我喜歡你的想法,試試這個看起來很自然。直接進入我在Java中自動裝箱的錯誤列表。 – x4u 2012-01-18 12:13:27
@Victor Sorokin:如果我只有String和Integer,這將是一個很好的解決方案。實際上,可能會有更多的類型。因此,我需要在代碼中保持高水平的泛型。 – 2012-01-18 12:48:19