[問題] 請問ArrayList<E>[]陣列 怎樣new才正確?

看板java作者 (路人)時間8年前 (2015/10/31 19:56), 8年前編輯推噓3(3012)
留言15則, 9人參與, 最新討論串1/1
請問「ArrayList<Object>[] lists;」要怎樣初始化? public void method(){ ArrayList<Object>[] lists; // lists = new ArrayList<Object>[5]; //錯誤 // lists = new ArrayList<Object>()[5]; //錯誤 // lists = new ArrayList[5]<Object>; //錯誤 // lists = new ArrayList[5]<Object>(); //錯誤 lists = new ArrayList[5]; //會有黃色警告 } ↓這樣雖然不會有警告,但多了「@SuppressWarnings("unchecked")」感覺有點礙眼。 @SuppressWarnings("unchecked") public void method(){ ArrayList<Object>[] lists; lists = new ArrayList[5]; } 請問ArrayList的陣列的初始化,到底要怎樣寫才最正確(也不會有警告)呢? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.204.87 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1446292598.A.08D.html ※ 編輯: ptt10 (36.237.204.87), 10/31/2015 19:58:29

10/31 20:54, , 1F
為何不用ArrayList<ArrayList<Object>> ?
10/31 20:54, 1F
有想過,但因為我其實是想要用二維陣列 ArrayList<Object>[][] 因為我要紀錄平面上每個點(x,y)上的多筆資料,想說用二維陣列[x][y]比較直覺。 看來只好把ArrayList<Object>用新物件(NewObject)包起來,然後再NewObject[][]了XD

10/31 21:34, , 2F
你有認真看過錯誤訊息嗎?
10/31 21:34, 2F
錯誤訊息是:Type safety: The expression of type ArrayList[] needs unchecked conversion to conform to ArrayList<Object>[] 想說應該是我 lists = new ArrayList[5]; 沒加<Object>,所以想問問要怎樣寫, 看怎樣加上<Object>,讓型別宣告明確點,使編譯器不會有警告。

10/31 21:53, , 3F
lists = new ArrayList<Object>[5](); ?
10/31 21:53, 3F

10/31 21:54, , 4F
更正 lists = new ArrayList<Object>[]();
10/31 21:54, 4F
這樣好像也不行QQ ============================================================================== 感謝大家回答,後來有找到答案了 請參考本版 #1GFZzSrB (https://www.ptt.cc/bbs/java/M.1346256732.A.D4B.html) → sbrhsieh:compiler 沒有不准這麼寫,只是囉唆一點,提醒要注意。 → awert:只能用非type-safe的方式建,否則compiler是不會過的 「這算是 Java 為了 generic 而導致出的一個大缺陷吧,而且不太直覺。」 看來ArrayList宣告成陣列,一定會有警告訊息@@ 只好很麻煩的把ArrayList<Object>包起來了 再次謝謝大家幫忙XD ※ 編輯: ptt10 (36.237.204.87), 10/31/2015 23:57:05

11/01 00:53, , 5F
要不要自己包個coordinate物件 內含x y 座標
11/01 00:53, 5F

11/01 00:53, , 6F
類似ArrayList<Coordiante> list 之類的
11/01 00:53, 6F

11/01 16:38, , 7F
推樓上
11/01 16:38, 7F

11/01 23:07, , 8F
樓上: Map<Coordinate,Data> 比較正常吧?
11/01 23:07, 8F

11/02 13:56, , 9F
拜託不要用 List Map 亂包東西 orz.....
11/02 13:56, 9F

12/09 23:37, , 10F
我比較好奇為什麼會需要用到ArrayList的陣列?
12/09 23:37, 10F

12/12 22:54, , 11F
因為我想要紀錄平面上每個地點(x,y)上的多筆資料。
12/12 22:54, 11F

12/12 22:56, , 12F
每個地點(x,y)用二維陣列宣告(這樣取值 直接[x][y]比較快)
12/12 22:56, 12F

12/12 23:00, , 13F
然後每個地點有多筆(數量不定)測量值,想用list存。
12/12 23:00, 13F

12/12 23:02, , 14F
所以直覺就想用ArrayList<o>[][]。不過後來決定把list包成
12/12 23:02, 14F

12/12 23:02, , 15F
新物件了,謝大家XD
12/12 23:02, 15F
文章代碼(AID): #1MDAns2D (java)