[英]How to remove all duplicates from a list
我試圖從列表中刪除所有重復的元素,而不使用 set 並且元素應該保持有序。
我的代碼無法正常工作,我認為 for 循環中存在一些問題,因為它並沒有四處走動。
任何建議都會有所幫助。
代碼:
public class DuplicatesCheck {
public static void main(String[] args) {
System.out.println("Enter elements:");
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
List<String> elements = new ArrayList<String>(Arrays.asList(input.split(",")));
List<String> elements2 = new ArrayList<String>();
elements2 = elements;
for(int i = 0; I < elements.size() - 1 ; i++ ) {
for(int j = i + 1; j < elements.size(); j++) {
if(elements.get(i).equals(elements.get(j))) {
elements2.remove(j);
}
}
}
System.out.println(elements2);
}
}
最簡單的方法也是使用來自 stream API 的 distinct() :
List<String> distinct = elements.stream()
.distinct()
.collect(Collectors.toList())
不要與索引交互。 因為一旦刪除一個元素,elements.size() 就會減 1。所以 j++ 將跳過一個元素。 因此,僅在未刪除時才使用 foreach 或增量 j 進行迭代。 如果刪除您的 j 僅指向下一個元素。 因為當一個元素從列表中移除時,剩余元素向左移動。
希望有所幫助。 如果您需要,我可以發布完整的解決方案。
我正在嘗試從列表中刪除所有重復的元素,而不使用集合,並且元素應該保持有序。
我的代碼無法正常工作,我認為 for 循環有一些東西,因為它並沒有四處走動。
任何建議都會有所幫助。
代碼:
public class DuplicatesCheck {
public static void main(String[] args) {
System.out.println("Enter elements:");
Scanner scan = new Scanner(System.in);
String input = scan.nextLine();
List<String> elements = new ArrayList<String>(Arrays.asList(input.split(",")));
List<String> elements2 = new ArrayList<String>();
elements2 = elements;
for(int i = 0; I < elements.size() - 1 ; i++ ) {
for(int j = i + 1; j < elements.size(); j++) {
if(elements.get(i).equals(elements.get(j))) {
elements2.remove(j);
}
}
}
System.out.println(elements2);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.