集合:
1、数组的特性:
2、ArrayList(动态数组):
测试代码1:
package listtest.com;
import java.util.ArrayList;
import java.util.List; public class HashCodesArrayList { public static void main(String[] args) { // 创建一个ArrayList并添加一些元素 List<String> list = new ArrayList<>(); list.add("Apple"); list.add("Banana"); list.add("Cherry"); // 遍历ArrayList并打印每个元素的哈希码和值 for (String item : list) { // 打印哈希码和值 System.out.println("Hash Code: " + item.hashCode() + ", Value: " + item); } }
}
运行结果如下:
测试代码2:
package listtest.com;
import java.util.ArrayList;
import java.util.List; public class ArrayListDemo { public static void main(String[] args) { // 创建ArrayList实例 List<Integer> numbers = new ArrayList<>(); // 添加元素到ArrayList中 // 随着元素的添加,ArrayList可能会自动扩容 for (int i = 0; i < 10; i++) { numbers.add(i); } // 查询操作:通过索引访问元素,非常快 System.out.println("The element at index 5 is: " + numbers.get(5)); // 输出: The element at index 5 is: 5 // 插入操作:在列表中间插入元素,需要移动其他元素,相对较慢 long startTime = System.currentTimeMillis(); numbers.add(5, 100); // 在索引5的位置插入元素100 long endTime = System.currentTimeMillis(); System.out.println("Insertion time: " + (endTime - startTime) + " ms"); // 输出插入后的列表 System.out.println("After insertion: " + numbers); // 删除操作:删除列表中的元素,同样需要移动其他元素,相对较慢 startTime = System.currentTimeMillis(); numbers.remove(5); // 删除索引5的元素(现在是100) endTime = System.currentTimeMillis(); System.out.println("Deletion time: " + (endTime - startTime) + " ms"); // 输出删除后的列表 System.out.println("After deletion: " + numbers); }
}
运行结果如下:
测试代码3:
package listtest.com;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class ArrayListExample { // 一个水果列表 private List<String> fruits = new ArrayList<>(); // 添加元素 public void addFruit(String fruit) { fruits.add(fruit); } // 删除元素(通过索引) public void removeFruit(int index) { if (index >= 0 && index < fruits.size()) { fruits.remove(index); } else { System.out.println("索引无效,无法删除元素。"); } } // 修改元素(通过索引) public void updateFruit(int index, String newFruit) { if (index >= 0 && index < fruits.size()) { fruits.set(index, newFruit); } else { System.out.println("索引无效,无法更新元素。"); } } // 查找元素(通过索引并返回) public String findFruit(int index) { if (index >= 0 && index < fruits.size()) { return fruits.get(index); } else { return "索引无效,未找到元素。"; } } // 打印所有元素 public void printFruits() { if (fruits.isEmpty()) { System.out.println("列表为空。"); } else { System.out.println("列表中的水果:"); for (String fruit : fruits) { System.out.println(fruit); } } } // 主方法public static void main(String[] args) { ArrayListExample example = new ArrayListExample(); // 添加元素 example.addFruit("苹果"); example.addFruit("香蕉"); example.addFruit("橙子"); // 打印所有元素 example.printFruits(); // 删除元素 example.removeFruit(1); // 删除索引为1的元素(香蕉) // 再次打印所有元素 example.printFruits(); // 修改元素 example.updateFruit(0, "草莓"); // 索引为0的元素(苹果)更改为草莓 // 再次打印所有元素 example.printFruits(); // 查找元素 System.out.println("索引0的水果是: " + example.findFruit(0)); // 控制台交互Scanner scanner = new Scanner(System.in); System.out.println("请输入要查找的水果索引(输入-1退出):"); while (true) { int index = Integer.parseInt(scanner.nextLine()); if (index == -1) { break; } System.out.println("索引" + index + "的水果是: " + example.findFruit(index)); } scanner.close(); }
}
运行结果如下:
测试代码4:
package listtest.com;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner; //用三种方式遍历ArrayList
public class ArrayListTest { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); Scanner scanner = new Scanner(System.in); // 获取输入的元素数量 System.out.print("请输入要添加的元素数量: "); int count = scanner.nextInt(); scanner.nextLine(); // 消耗掉nextInt()后的换行符 // 循环读取输入的元素并添加到列表中 for (int i = 0; i < count; i++) { System.out.print("请输入第 " + (i + 1) + " 个元素: "); String element = scanner.nextLine(); list.add(element); } // 关闭scanner scanner.close(); // 使用for循环遍历(基于索引) System.out.println("\n遍历方式1(基于索引的for循环):"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } // 使用增强型for循环遍历(for-each循环) System.out.println("\n遍历方式2(增强型for循环):"); for (String item : list) { System.out.println(item); } // 使用Iterator遍历 System.out.println("\n遍历方式3(使用Iterator):"); Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String item = iterator.next(); System.out.println(item); } }
}
运行结果如下:
测试代码5:
创建一个图书类:
package listtest.com;
public class Book { private String title; private String author; public String isbn; public Book(String title, String author, String isbn) { this.title = title; this.author = author; this.isbn = isbn; } public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getIsbn() {return isbn;}public void setIsbn(String isbn) {this.isbn = isbn;}@Override public String toString() { return "Book{" + "title='" + title + '\'' + ", author='" + author + '\'' + ", isbn='" + isbn + '\'' + '}'; }
}
创建一个图书馆类:
package listtest.com;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class LibrarySystem { private List<Book> books; public LibrarySystem() { this.books = new ArrayList<>(); } // 添加图书 public void addBook(Book book) { books.add(book); } public boolean removeBook(String isbn) { Iterator<Book> iterator = books.iterator(); while (iterator.hasNext()) { Book book = iterator.next(); if (book.isbn.equals(isbn)) { iterator.remove(); // 使用Iterator的remove方法删除元素 return true; } } return false; }// 查找图书,根据ISBN号 public Book findBook(String isbn) { for (Book book : books) { if (book.isbn.equals(isbn)) { return book; } } return null; } // 列出所有图书 public void listBooks() { for (Book book : books) { System.out.println(book); } }
}
测试类:
package listtest.com;
public class LibrarySystemTest { public static void main(String[] args) { LibrarySystem library = new LibrarySystem(); // 添加图书 library.addBook(new Book("Java编程思想", "Bruce Eckel", "123456789")); library.addBook(new Book("Effective Java", "Joshua Bloch", "987654321")); // 列出所有图书 System.out.println("当前图书列表:"); library.listBooks(); // 查找图书 Book book = library.findBook("987654321"); if (book != null) { System.out.println("找到图书:" + book); } else { System.out.println("未找到图书"); } // 删除图书 if (library.removeBook("123456789")) { System.out.println("图书已删除"); } // 再次列出所有图书 System.out.println("删除后的图书列表:"); library.listBooks(); }
}
运行结果如下: