集合:
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();
}
}
运行结果如下:
测试代码5:
创建一个内衣类:
package settest.com;
class LadyUnderwearSorter {
private String brand;
private String size;
private String color;
private String material;
private double price;
// 构造方法
public LadyUnderwearSorter(String brand, String size, String color, String material, double price) {
this.brand = brand;
this.size = size;
this.color = color;
this.material = material;
this.price = price;
}
public String getBrand() {
return brand;
}
public String getSize() {
return size;
}
public String getColor() {
return color;
}
public String getMaterial() {
return material;
}
public double getPrice() {
return price;
}
// toString 方法,打印信息
@Override
public String toString() {
return "LadyUnderwear{" +
"brand='" + brand + '\'' +
", size='" + size + '\'' +
", color='" + color + '\'' +
", material='" + material + '\'' +
", price=" + price +
'}';
}
}
测试代码:
package settest.com;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class Test {
public static void main(String[] args) {
// 创建内衣对象
List<LadyUnderwearSorter> underwears = Arrays.asList(
new LadyUnderwearSorter("品牌A", "S", "红色", "棉", 50.0),
new LadyUnderwearSorter("品牌B", "M", "蓝色", "丝绸", 100.0),
new LadyUnderwearSorter("品牌C", "L", "黑色", "蕾丝", 75.0),
new LadyUnderwearSorter("品牌A", "XL", "白色", "棉", 60.0)
);
// 使用Comparator根据价格排序
underwears.sort(Comparator.comparingDouble(LadyUnderwearSorter::getPrice));
// 打印排序后的内衣列表
underwears.forEach(System.out::println);
}
}
运行结果如下: