2013-04-01 27 views
0

我有一個Java對象(對象1),我不能修改,其中有25個ArrayLists。我必須使用另一個對象(對象2),並根據對象2中找到的字符串將其放入對象1的相應列表之一中。每個列表都有且僅有一個與其關聯的唯一字符串,可在任何對象2.插入所有對象2和/或最乾淨的最快方法是什麼?基於字符串輸入將值插入列表的最快/最乾淨的方式是什麼?

現在我只是使用if/else if語句做我的排序,我不能使用switch語句,因爲有串案件switch語句是在Java SE最近才實現7

編輯1:修改標題和問題。此處還有一個示例:

if ("1.3.6.1.4.1.19376.1.5.3.1.3.25".equals(root)) { 
      physicalExamModel.addVitalSigns(observationModel); 
     } else if ("1.3.6.1.4.1.19376.1.5.3.1.1.9.16".equals(root)) { 
      physicalExamModel.addGeneralAppearanceObservations(observationModel); 
     } else if ("1.3.6.1.4.1.19376.1.5.3.1.1.9.48".equals(root)) { 
      physicalExamModel.addVisibleImplantedMedicalDevicesObservations(observationModel); 
     } else if ("1.3.6.1.4.1.19376.1.5.3.1.1.9.17".equals(root)) { 
      physicalExamModel.addIntegumentarySystemObservations(observationModel); 
     } else if ("1.3.6.1.4.1.19376.1.5.3.1.1.9.18".equals(root)) { 
      physicalExamModel.addHeadObservations(observationModel); 
     } else if ("1.3.6.1.4.1.19376.1.5.3.1.1.9.19".equals(root)) { 
      physicalExamModel.addEyeObservations(observationModel); 
+3

對不起,但我不明白你的問題。 –

+0

我們可以看到一個例子或什麼? – flup

+0

這很不清楚 –

回答

0

爲什麼不使用Map<String, List<Foo>>?關鍵是「與[每個列表]關聯的唯一字符串」,值當然是列表本身。

+0

甚至更​​好,一個'Map >'。 –

+0

@LuiggiMendoza我不清楚,OP實際上是想要對25個列表中的每一個進行排序。他可能意味着以不同的意義「排序」。就像「我需要爲對象2選擇一個接收器」。 –

+1

我不清楚OP爲什麼不能修改* Object 1 *開始,以及如何將'if-else'和'switch'之間的改變相關聯以改進算法(是的,這讓我的思想)。 –

0

假設你Object2實例存儲在一些ArrayCollection和所需的域是唯一的,你可以將它們存儲在Map,然後把他們救出來的要求。

使用TreeMap他們甚至會進行排序:

final Collection<Object2> object2s = new LinkedList<>(); 
final Map<String, Object2> myMap = new TreeMap<>(); 
for(final Object2 o2 : object2s) { 
    myMap.put(o2.getField(), o2); 
} 

final Object2 desiredObject2 = myMap.get("SomeDesiredValue"); 

假設所需的值不是唯一的,那麼你可以使用Collections.sort使用自定義比較排序的Object2Arrays.sort一個List排序的Array通過所需字段:

final List<Object2> object2s = new LinkedList<>(); 
Collections.sort(object2s, new Comparator<Object2>() { 

    @Override 
    public int compare(Object2 o1, Object2 o2) { 
     return o1.getField().compareTo(o2.getField()); 
    } 
}); 

Map具有始終被排序的優點,即使您稍後在其中添加更多Object2,但缺點是屬性必須是纔是唯一的。否則,Collections.sort方法可以正常工作。

相關問題