[英]Is there a better way to implement HashMap<String, List<HashMap<String, List<Details>>>>?
[英]Is it a bad way to force a List to a HashMap?
我將提交我的代碼,對其進行解釋,然后向您提問。
以下代碼是控制器代碼的一部分。
HashMap<String, Object> result = bService.getBoardListPage(params, page-1);
System.out.println("result : " + result);
// Deriving the desired value among the List values ??existing in the HashMap -----------------------------------------
List<?> list = (List<?>) result.get("boardList");
for(int i = 0; i < list.size(); i++)
{
HashMap<String, Object> map = (HashMap<String, Object>) list.get(i);
System.out.println("map 1 : " + map);
int all_boardIDX = (Integer) map.get("board_idx");
HashMap<String, Object> replyBoard = bService.boardApplicableReplyBoard(all_boardIDX);
map.put("hh", replyBoard);
System.out.println("map 2 : " + map);
}
// -------------------------------------------------------------------------------------
最重要的是,代碼將回復該帖子。 (這是回復。沒有評論)
HashMap<String, Object> result = bService.getBoardListPage(params, page-1);
以上結果包含有關帖子的信息。
結果日志如下所示。
result : {current=1, last=1, start=1, end=10, boardList=[{phone_2=9959, comment_count=0, phone_1=010, board_idx=6, phone_3=7432, board_title=zzz, pw=1, sex=false, birth=1993-12-04, board_writer=test2, board_readNum=1, board_content=hhh, fileCount=0, board_writeDate=2017-12-07 18:44:44.0, authority=false, name=이, id=test2, idx=3, board_goodNum=0, email=rkdhfl1470@naver.com}
我想將有關答復的信息放入結果中存在的boardList中!
因此,我得到了如下所示的boardList。
List<?> list = (List<?>) result.get("boardList");
然后我繞過for語句以獲取列表的大小,並按如下方式處理for語句以包含回復信息。
for(int i = 0; i < list.size(); i++)
{
HashMap<String, Object> map = (HashMap<String, Object>) list.get(i);
System.out.println("map 1 : " + map);
int all_boardIDX = (Integer) map.get("board_idx");
HashMap<String, Object> replyBoard = bService.boardApplicableReplyBoard(all_boardIDX);
map.put("hh", replyBoard);
System.out.println("map 2 : " + map);
}
結果,它按照我想要的方式工作!
map 2 : {phone_2=9959, comment_count=0, hh={rb_title=[답글] Test, rb_writeDate=2017-12-07 15:38:03.0, board_idx=1, rb_idx=1, rb_writer=admin, rb_content=HH, rb_readNum=0, idx=1}
但是我不舒服。
原因是,這是因為在下面的代碼中,發生了諸如“類型安全:從捕獲#3的?到HashMap的未選中強制轉換”的警告。
HashMap<String, Object> map = (HashMap<String, Object>) list.get(i);
所以我很好奇。 我寫的代碼正確嗎?
如何改善我的代碼?
並且將List類型轉換為HashMap是不正確的嗎?
作為初學者,我有很多問題。 請告訴我您的意見。
感謝您看到長句。
並且將List類型轉換為HashMap是不正確的嗎?
如果可以保證它不會拋出java.lang.ClassCastException
那就很好。 您確切地知道哪些對象將進入列表/地圖,因此很好。
要么
您可以這樣定義列表:
List<HashMap<String, Object>>
我認為這將消除警告。 然后,您也不必再投放它。
類型安全確實可以為您提供幫助。 或其他將來需要維護您的代碼的人。 使用List<HashMap<String, Object>>
告訴編譯器此List
將始終包含HashMap<String, Object>
元素。 因此,如果您嘗試將List
的元素視為不同Class
對象,則實際上會遇到編譯時錯誤。
而使用List<?>
您並沒有告訴編譯器任何可使代碼保持類型安全的東西(即,避免拋出java.lang.ClassCastException
)。 因此,如果您搞砸了,則只會在運行時且僅在失敗情況下才能看到錯誤。
希望有道理!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.