public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("20/04/2022", "20/04/2022","20/04/2022","21/04/2022", "22/04/2022", "22/04/2022"));
List<String> list2 = new ArrayList<String>(Arrays.asList("1000","1000","1000", "15000", "36000", "36000"));
for(int i=0;i<list.size()-1;i ) {
while ((list.get(i).equals(list.get(i 1))) && (list2.get(i).equals(list2.get(i 1)))) {
list.remove(i);
list2.remove(i);
}
}
for (String alist : list) {
System.out.println("list1: " alist);
}
for (String alist2 : list2) {
System.out.println("list2: " alist2);
}
}
圖片
圖片
uj5u.com熱心網友回復:
如果洗掉的最后一項導致您i 1超出范圍,則需要中斷 while 回圈。嘗試這個:
for(int i=0;i<list.size()-1;i ) {
while ((list.get(i).equals(list.get(i 1))) && (list2.get(i).equals(list2.get(i 1)))) {
list.remove(i);
list2.remove(i);
if(i 1 >= list.size() || i 1 >= list2.size()) break;
}
}
正如 gapserg 在他的回答中提到的那樣,您修改初始串列作為副作用。這仍然適用于您的方法,但有更好的選擇。
例如,您可以創建一個新串列來復制唯一對,而不必像評論中所述洗掉所有重復項。
旁注:您的方法僅在串列具有相同大小、所有重復項彼此相鄰并且您不在乎初始串列被修改的情況下才有效。
uj5u.com熱心網友回復:
這不是使用回圈“for”的想法,因為您更改了“串列”。
List<Integer> list = new ArrayList<>(Arrays.asList(new Integer[]{1, 1, 3, 3, 3, 4, 4, 5}));
int i = 0;
while (i < list.size() - 1) {
if (list.get(i).equals(list.get(i 1))) {
list.remove(i);
} else i ;
}
System.out.println(list.toString());
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/483001.html
上一篇:陣列中不包括指定鍵的多個值
