簡體   English   中英

基於字符串輸入將值插入列表的最快/最干凈的方法是什么?

[英]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實例存儲在某個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與自定義比較器一起使用,以對Object2List進行排序,或者對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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM