是否可以創建一個有兩個孩子的地圖(TreeMap)? EX:如何創建一個有兩個孩子的地圖,擴展一個類似的父類?
我有兩個類,A和B,這兩個類都擴展C.我希望將BOTH A和B添加到同一個映射。每個類擴展C,但我不知道如何 - 顯然聲明如此:
Map<String, ? extends C> myMap = new TreeMap<String, ? extends C>();
不起作用。
我需要這個,因爲它會讓我的程序更容易將這兩個對象保留在同一張地圖中。從那裏,我可以簡單地檢查: if (map.get(key) instanceof A) {do what I want for A objects}
我也不希望將它們放到C類,因爲我一旦需要A和B類中的方法,一旦它們「出」地圖。
這兩個對象都執行類似的基本功能,但有非常不同的方法和字段,所以我真的不能解決這個問題,而不會不必要地「組合」它們,只是增加額外的變量來檢查,即(private static boolean isClassA;
)我需要它們是單獨的類,但是在Map中它並不重要,因爲它們都擴展了C類並在它中共享了一個通用的必需方法。謝謝!
更多信息上的程序:
基本上類A和B按照從數據庫中讀取在一個短語集。它們的設置與此類似: map.put(「這是A類的一個短語」,新類A()); map.put(「B類短語」,新B類());
現在,我正在解析用戶輸入的段落。我比較用戶輸入的字符串,然後刪除與A類或B類共享密鑰的任何部分的主要問題。以下是與上述地圖值相關的示例:
「這是一個用於A類將被取出,B類的這個短語也將被刪除。「根據這個輸入,當我們循環瀏覽地圖(希望它將包含類A和類B)時,它將從字符串中刪除兩個實例。通過使用方法來剪切字符串(當在地圖的鍵中找到匹配項時),所以返回的字符串將是: 「將被取出,並且這也將被移除」。
現在,這裏是具有不同地圖的主要問題。我正在根據鍵的長度來排列地圖。所以首先會檢查更大的字符串,並且用戶句子將從最大字符串到最小字符串的順序被切斷。
希望你現在看到這個問題。如果我有兩張地圖,那麼當我檢查包含類A的鍵的用戶輸入時,它將從A類中的所有最大字符串到最小字符串。這意味着B類中的任何LARGE字符串(在A類搜索後通過搜索時)將被切斷。
例如:A類有鑰匙「我」和「我感覺好極了」 B類具有按鍵「我很高興」,「我覺得 給用戶一句:」我很高興和感覺好極了。
我們使用包含A類實例的第一張地圖進行搜索.A類(通過剪切方法)將從句子中移除「我是」。但是這是不正確的,因爲B班顯然有一個更長的字符串「我很高興」,它符合用戶的句子。如果我們同時含有A和B的地圖那麼我們將不得不在排序與鍵像這樣的地圖:
「我感覺好極了」(A類) 「我很高興」(B類) 「我感覺「(B類) 」我是「(A類)
因此,我們會得到B級結果修剪句子爲:」感覺很棒「,因爲B類與關鍵字」我感覺好極了」。
這是我需要它們在同一張地圖中的原因,只是按升序對它們進行排序,並確保它們正確修剪用戶字符串。我不能簡單地遍歷一個地圖,那麼其他:/
我的意思地圖<字符串,?擴展C> myMap = new TreeMap();不是它在那裏。 –
你知道可以編輯你的文章嗎? –
是的,但我不熟悉這個網站,我的評論有正確的形式。但由於某些原因,這些字符似乎已經干擾了我的問題的正確格式。基本上我說的是當我去編輯我原來的帖子它有正確的句子:「Map myMap = new TreeMap ()」,但是一旦我點擊接受它成爲你在我的文章中看到的。所以它必須對指定格式或字符的字符做些什麼。 –