簡體   English   中英

比較和更新兩個arraylist java android

[英]compare and update two arraylist java android

我有一個兩個數組列表,在單個索引處有多個值。 我正在添加如下值:

ArrayList<String> list1 = new ArrayList<String>();
list1.addAll(Arrays.asList("iFRa1wVJ","Breakfast","7:00am","8:30am"));
list1.addAll(Arrays.asList("JyvmCZhw","Lunch","1:00pm","3:00pm"));
list1.addAll(Arrays.asList("HR6ovPjE","Dinner","7:30pm","9:30pm"));


ArrayList<String> list2 = new ArrayList<String>();
list2.addAll(Arrays.asList("iFRa1wVJ","Breakfast1","9:00am","10:30am"));
list2.addAll(Arrays.asList("JyvmCZhw","Lunch","2:00pm","3:00pm"));
list2.addAll(Arrays.asList("HR6ovPjE","Dinner","8:30pm","9:30pm"));

預期結果如下:

   iFRa1wVJ,Breakfast,7:00am,8:30am --> Breakfast1 is overwriiten as Breakfast from list1
   JyvmCZhw,Lunch,1:00pm,3:00pm --> 2:00pm is overwriiten as 1:00pm from list1
   HR6ovPjE,Dinner,7:30pm,9:30pm --> 8:30pm is overwriiten as 7:30pm from list1

我需要比較每個索引的值,並使用第一個列表的值更新第二個列表。 如何比較每個索引中的列表。 任何幫助將不勝感激。 謝謝。

聽起來好像你最好使用MapSet而不是List。 例如:

class Meal {
    //You may want to store times in a different format, i.e. a long in millisecond
    private final String name, startTime, endTime;

    Meal(String name, String startTime, String endTime) {
        this.name = name;
        this.startTime = startTime;
        this.endTime = endTime;
    }

    //getName(), getStartTime(), getEndTime()...

}

在你的地圖上......

final Map<String, Meal> map = new HashMap<>();
map.put("iFRa1wVJ", new Meal("Breakfast","7:00am","8:30am"));
map.put("iFRa1wVJ", new Meal("Breakfast","9:00am","10:30am"));

第二個“早餐”將取代第一個,因為他們共享相同的密鑰。

您希望在每個索引處有兩個具有多個值的數組列表,但在原始代碼中, ArrayList<String>只是一個在每個索引處具有單個String對象的數組。 所以我改變了數據結構以保存String的列表。 如果您真正想要做的就是使用list1的相應索引處的值更新每個索引,您只需更新索引處的所有內容即可。

ArrayList<List<String>> list1 = new ArrayList<List<String>>();
list1.add(Arrays.asList("iFRa1wVJ", "Breakfast", "7:00am", "8:30am"));
list1.add(Arrays.asList("JyvmCZhw", "Lunch", "1:00pm", "3:00pm"));
list1.add(Arrays.asList("HR6ovPjE", "Dinner", "7:30pm", "9:30pm"));

ArrayList<List<String>> list2 = new ArrayList<List<String>>();
list2.add(Arrays.asList("iFRa1wVJ", "Breakfast1", "9:00am", "10:30am"));
list2.add(Arrays.asList("JyvmCZhw", "Lunch", "2:00pm", "4:00pm"));
list2.add(Arrays.asList("HR6ovPjE", "Dinner", "8:30pm", "9:30pm"));

for (int i = 0; i < list1.size(); i++) {
    list2.set(i, list1.get(i));
}

System.out.println(list1);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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