java arraylist 删除回车符_2种Java删除ArrayList中的重复元素的方法

这篇文章将给出两种从ArrayList中删除重复元素的方法,分别是使用HashSet和LinkedHashSet。

ArrayList是Java中最常用的集合类型之一。它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序。在编码时我们经常会遇到那种必须从已建成的ArrayList中删除重复元素的要求。

6dbfb76255d391cf3e5aa25a120c12d7.png

方法1:使用HashSet删除ArrayList中重复的元素

在该方法中,我们使用HashSet来删除重复的元素。如你所知,HashSet不允许有重复的元素。我们使用HashSet的这个属性来删除已建 成的ArrayList中的重复元素。但是,这种方法有一个缺点。那就是,它会删除ArrayList中元素的插入顺序。这意味着,删除重复的元素后,元 素的插入顺序就不对了。先来看下面这个例子。

import java.util.ArrayList;

import java.util.HashSet;

public class MainClass

{

public static void main(String[] args)

{

//Constructing An ArrayList

ArrayList listWithDuplicateElements = new ArrayList();

listWithDuplicateElements.add("JAVA");

listWithDuplicateElements.add("J2EE");

listWithDuplicateElements.add("JSP");

listWithDuplicateElements.add("SERVLETS");

listWithDuplicateElements.add("JAVA");

listWithDuplicateElements.add("STRUTS");

listWithDuplicateElements.add("JSP");

//Printing listWithDuplicateElements

System.out.print("ArrayList With Duplicate Elements :");

System.out.println(listWithDuplicateElements);

//Constructing HashSet using listWithDuplicateElements

HashSet set = new HashSet(listWithDuplicateElements);

//Constructing listWithoutDuplicateElements using set

ArrayList listWithoutDuplicateElements = new ArrayList(set);

//Printing listWithoutDuplicateElements

System.out.print("ArrayList After Removing Duplicate Elements :");

System.out.println(listWithoutDuplicateElements);

}

}

输出:

ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP]

ArrayList After Removing Duplicate Elements :[JAVA, SERVLETS, JSP, J2EE, STRUTS]

注意输出结果。你会发现,在删除重复元素之后,元素重新洗牌。不再按照插入顺序排列。如果你想在删除重复的元素之后依然保持元素的插入顺序,那么不 建议使用此方法。还有另一种方法,可以保证在删除重复的元素之后也不改变元素的插入顺序。那就是使用LinkedHashSet。

方法2:使用LinkedHashSet删除ArrayList中重复的元素

在该方法中,我们使用LinkedHashSet删除ArrayList中重复的元素。正如你知道的,LinkedHashSet不允许重复元素, 同时保持元素的插入顺序。LinkedHashSet的这两个属性可以确保在删除ArrayList中的重复元素之后,依然保持元素的插入顺序。参见下面的例子。

import java.util.ArrayList;

import java.util.LinkedHashSet;

public class MainClass

{

public static void main(String[] args)

{

//Constructing An ArrayList

ArrayList listWithDuplicateElements = new ArrayList();

listWithDuplicateElements.add("JAVA");

listWithDuplicateElements.add("J2EE");

listWithDuplicateElements.add("JSP");

listWithDuplicateElements.add("SERVLETS");

listWithDuplicateElements.add("JAVA");

listWithDuplicateElements.add("STRUTS");

listWithDuplicateElements.add("JSP");

//Printing listWithDuplicateElements

System.out.print("ArrayList With Duplicate Elements :");

System.out.println(listWithDuplicateElements);

//Constructing LinkedHashSet using listWithDuplicateElements

LinkedHashSet set = new LinkedHashSet(listWithDuplicateElements);

//Constructing listWithoutDuplicateElements using set

ArrayList listWithoutDuplicateElements = new ArrayList(set);

//Printing listWithoutDuplicateElements

System.out.print("ArrayList After Removing Duplicate Elements :");

System.out.println(listWithoutDuplicateElements);

}

}

输出:

ArrayList With Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, JAVA, STRUTS, JSP]

ArrayList After Removing Duplicate Elements :[JAVA, J2EE, JSP, SERVLETS, STRUTS]

注意输出。你可以发现在删除ArrayList中的重复元素后,依然保持了元素的插入顺序。

以上就是本文的全部内容,希望对大家的学习有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的图书管理系统的 Java 代码示例: ```java import java.util.ArrayList; import java.util.Scanner; public class LibrarySystem { // 图书类 public static class Book { private String title; private String author; private int numCopies; public Book(String title, String author, int numCopies) { this.title = title; this.author = author; this.numCopies = numCopies; } public String getTitle() { return title; } public String getAuthor() { return author; } public int getNumCopies() { return numCopies; } public void setNumCopies(int numCopies) { this.numCopies = numCopies; } } // 图书馆类 public static class Library { private ArrayList<Book> books; public Library(ArrayList<Book> books) { this.books = books; } public ArrayList<Book> getBooks() { return books; } // 添加图书 public void addBook(Book book) { books.add(book); } // 删除图书 public void removeBook(Book book) { books.remove(book); } // 显示所有图书 public void displayBooks() { System.out.println("图书列表:"); for (Book book : books) { System.out.println(book.getTitle() + " - " + book.getAuthor() + " - " + book.getNumCopies() + "本"); } } // 借出图书 public void borrowBook(String title) { for (Book book : books) { if (book.getTitle().equals(title)) { if (book.getNumCopies() > 0) { book.setNumCopies(book.getNumCopies() - 1); System.out.println("借书成功!"); return; } else { System.out.println("该书已全部借出!"); return; } } } System.out.println("未找到该书!"); } // 归还图书 public void returnBook(String title) { for (Book book : books) { if (book.getTitle().equals(title)) { book.setNumCopies(book.getNumCopies() + 1); System.out.println("还书成功!"); return; } } System.out.println("未找到该书!"); } } public static void main(String[] args) { ArrayList<Book> books = new ArrayList<>(); books.add(new Book("Java编程思想", "Bruce Eckel", 2)); books.add(new Book("Java核心技术", "Cay S. Horstmann", 3)); Library library = new Library(books); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请输入要执行的操作:"); System.out.println("1. 添加图书"); System.out.println("2. 删除图书"); System.out.println("3. 显示所有图书"); System.out.println("4. 借出图书"); System.out.println("5. 归还图书"); System.out.println("0. 退出程序"); int choice = scanner.nextInt(); scanner.nextLine(); // 处理掉输入缓冲区回车符 switch (choice) { case 1: System.out.println("请输入图书名称:"); String title = scanner.nextLine(); System.out.println("请输入作者名称:"); String author = scanner.nextLine(); System.out.println("请输入图书数量:"); int numCopies = scanner.nextInt(); scanner.nextLine(); // 处理掉输入缓冲区回车符 library.addBook(new Book(title, author, numCopies)); System.out.println("添加成功!"); break; case 2: System.out.println("请输入要删除的图书名称:"); String titleToDelete = scanner.nextLine(); for (Book book : library.getBooks()) { if (book.getTitle().equals(titleToDelete)) { library.removeBook(book); System.out.println("删除成功!"); break; } } System.out.println("未找到该书!"); break; case 3: library.displayBooks(); break; case 4: System.out.println("请输入要借出的图书名称:"); String titleToBorrow = scanner.nextLine(); library.borrowBook(titleToBorrow); break; case 5: System.out.println("请输入要归还的图书名称:"); String titleToReturn = scanner.nextLine(); library.returnBook(titleToReturn); break; case 0: System.exit(0); default: System.out.println("无效输入,请重新输入!"); break; } } } } ``` 这是一个简单的控制台程序,可以通过输入数字来选择不同的操作。其,图书类和图书馆类都是内部类,可以根据需要进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值