看板 Web_Design 關於我們 聯絡資訊
※ 引述《forkome (丁丁是個人材)》之銘言: : 種類 子種類 書名 : 第一筆 小說 科幻 丁丁大戰哥吉拉 : 第二筆 小說 科幻 星際大戰丁丁 : 第三筆 小說 愛情 丁丁再愛我一遍 : 第四筆 雜誌 生活 學丁丁減肥 : 第五筆 雜誌 語言 跟丁丁學英文 : 目前小弟想把他放進三維陣列裡來使用 : array[0] = 小說 array[0][0] = 科幻 array[0][0][0] = 丁丁大戰哥吉拉 : array[1] = 雜誌 array[0][1] = 愛情 array[0][1][0] = 丁丁再愛我一遍 : 小弟使用的方式是 : rs1 = select distinct 種類 from book : while(rs1.next()){ : array[i] = rs1.getString(1) : ↑把種類放進一維陣列 : rs2 = select distinct 子種類 from book where 種類 = rs1.getString(1) : while(rs1.next()){ : array[i][j] = rs2.getString(1) : ↑把子種類放進二維陣列 : rs3 = select * from book where 種類=rs1.getString(1) and 子種類 = rs2.getString(1) : while(rs3.next()){ : array[i][j][k] = rs3.getString(1) : ↑把書名放進三維陣列 : } : } : } : 為了將結果放進陣列裡,使用了三個RecordSet,若量大的話 : 會跑的很慢,上面是小弟使用的方式,不知有沒有比較快的方式 : 使用的語言是java,主要是想減少RecordSet的使用 : 還是說~~沒錯,只能那樣用 我應該說我回這篇是在開玩笑,還是我是說認真的呢,(思) 應該一半一半吧......既然都寫了就貼出來了...XDXDXD 其實我是覺得你可以用 "分類;子分類;書名"這樣的字串 然後用TreeSet存 , 這樣也是可以達到用分類子分類排序的效果 , 要取用的時候用iterator掃一次就可以找到你想要的了... 唯一的缺點大概是同樣的分類/子分類/底下不能有同樣的書名吧, 對於有些書只有版本號不同的時候可能有點不方便。 當然 這還是能改的 ,很多方式就是了...:P 至於底下這個無聊作 看看就好(核爆) ──────────────────────────────── /*懶得做資料庫....用array替代先...*/ String[][] list={ {"小說","科幻","丁丁大戰哥吉拉"}, {"小說","科幻","星際大戰丁丁"} , {"小說","愛情","丁丁再愛我一遍"} , {"雜誌","生活","丁丁再愛我一遍"} , {"雜誌","語言","跟丁丁學英文"} }; BookList listBook=new BookList(); for(int i=0;i<list.length;i++){ BookObj objBook=new BookObj(list[i][0],list[i][1],list[i][2]); listBook.addBook(objBook); } printBook(listBook.getTypeBook("小說")); printBook(listBook.getSubTypeBook("小說","科幻")); ──────────────────────────────── static public void printBook(BookObj[] array){ for(int i=0;i<array.length;i++){ System.out.println(array[i].m_strType+":" +array[i].m_strSubtype+":"+array[i].m_strName); } } ──────────────────────────────── class BookObj{ String m_strType; String m_strSubtype; String m_strName; public BookObj(String strType,String strSubtype,String strName){ m_strType=strType; m_strSubtype=strSubtype; m_strName =strName; } } /*考慮到可能會有查找分類項目的需求 ,建立一個有分類的結構.*/ class BookList{ private HashMap m_setBook; BookList(){ m_setBook=new HashMap(); } boolean addBook(BookObj rBook){ if(!m_setBook.containsKey(rBook.m_strType)){ //分類 m_setBook.put(rBook.m_strType,new HashMap()); } HashMap setSubType= (HashMap)m_setBook.get(rBook.m_strType); if(!setSubType.containsKey(rBook.m_strSubtype)){ //子分類 setSubType.put(rBook.m_strSubtype,new ArrayList()); } ArrayList aryBooks= (ArrayList)setSubType.get(rBook.m_strSubtype); //aryBooksadd(rBook); aryBooks.add(rBook); return true; } BookObj getBook(String strBookname){ Iterator irType=m_setBook.values().iterator(); BookObj retBook; while(irType.hasNext()){ Iterator irSubType= ((HashMap)irType.next()).values().iterator(); while(irSubType.hasNext()){ retBook = findBook((ArrayList)irSubType.next(),strBookname); if(retBook!=null) return retBook; } } return null; } BookObj[] getTypeBook(String strType){ ArrayList listRet=new ArrayList(); if(m_setBook.containsKey(strType)){ Iterator irSubType= ((HashMap)m_setBook.get(strType)).values().iterator(); while(irSubType.hasNext()){ listRet.addAll(((ArrayList)irSubType.next())); } } return transToBook(listRet); } BookObj[] getSubTypeBook(String strType,String strSubType){ ArrayList listRet=new ArrayList(); if(m_setBook.containsKey(strType)){ HashMap setSubType=(HashMap)m_setBook.get(strType); if(setSubType.containsKey(strSubType)){ listRet.addAll((ArrayList)setSubType.get(strSubType)); } } return transToBook(listRet); } private BookObj[] transToBook(ArrayList listBook) { BookObj[] aryBook=new BookObj[listBook.size()]; for(int i=0;i<listBook.size();i++){ aryBook[i]=(BookObj)listBook.get(i); } return aryBook; } private BookObj findBook(ArrayList listBook,String strBookname){ for(int i=0;i<listBook.size();i++){ BookObj bookTmp=(BookObj)listBook.get(i); if(bookTmp.m_strName.equals(strBookname)) return bookTmp; } return null; } BookObj getBook(String strType,String strSubType,String strBookname){ if(!m_setBook.containsKey(strType)) return null; //分類不存在 if(!((HashMap)m_setBook.get(strType)).containsKey(strSubType)) return null; //子分類不存在 ArrayList listSubtypeBook = (ArrayList) ((HashMap)(m_setBook.get(strType))).get(strSubType); return findBook(listSubtypeBook,strBookname); } int size(){ int size=0; Iterator irType=m_setBook.values().iterator(); while(irType.hasNext()){ Iterator irSubType= ((HashMap)irType.next()).values().iterator(); while(irSubType.hasNext()){ size+= ((ArrayList)irSubType.next()).size(); } } return size; } } --  ▄▅▆▇███▇▆▅▄▃        ╰┼╯─╮ ╮         ◥███████████◣       ╰┼╯=│=│         ◥██████───────    *. ╯  ╯ ╯ の 物 語 .*  ◥███████──────◣ ~ ◢◣             ◢◣  ◥██████───────◤   ◥◤  空白的世界.翼 ◥◤  ◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂telnet://tony1223.no-ip.info -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.59.247 ※ 編輯: TonyQ 來自: 220.132.59.247 (10/09 17:22)
forkome:對於經驗不足的我,幫助良多,非常謝謝你用心的回我 10/10 13:16