[英]what is the fastest/cleanest way to insert values into lists based on a string input?
我有一個不能修改的Java對象(對象1),其中有25個ArrayLists。 我必須使用另一個對象(對象2),並根據在對象2中找到的字符串將其放入對象1的相應列表中的一個。每個列表都有一個且只有一個與之關聯的唯一字符串,可以在以下位置找到任何對象2。插入所有對象2和/或最干凈的對象的最快方法是什么。
現在,我只是使用if / else if語句進行排序,而我不能使用switch語句,因為帶有String大小寫的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);
為什么不使用Map<String, List<Foo>>
? 關鍵是“與[每個列表]關聯的唯一字符串”,其值當然是列表本身。
假設您的Object2
實例存儲在某個Array
或Collection
,並且所需字段是唯一的,則可以將它們存儲在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
與自定義比較器一起使用,以對Object2
的List
進行排序,或者對Arrays.sort
進行按所需字段對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
方法可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.