一、集合
P499 集合介绍
数组不足之处:1.数组长度必须指定,一旦指定,不能修改。2.数组内的元素必须是同一类型。3.使用数组增加/删除元素的示意代码,比较麻烦。
集合的优点:1.可以动态保存任意多个对象,使用比较方便。2.提供了一系列方便的操作对象的方法:add、remove、set、get等。3.使用集合添加、删除新元素的示意代码。
P500 集合体系图
集合主要分为2组:
1.单列集合(在集合里放单个元素)
Collection里面有2个重要的子接口list和set。

2.双列集合(在集合里放键值对元素)

P501 Collection方法
public interface Collection<E> extends iterable<E>
1.collection实现子类可以存放多个元素,每个元素可以是Object
2.有些Collection的实现类,可以存放重复元素。
3.List是有序的,Set是无序的。
4.Collection接口没有直接实现类,是通过子接口Set和List来实现的。

P502 迭代器遍历
1.Iterator对象成为迭代器,用于遍历Collection集合中的元素。
2.所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了Iterator接口的对象,即返回一个迭代器。
3.Iterator用于遍历集合
iterator.hasNext()可以判断是否有下一个元素,iterator.next()可以获取下一个元素。
public class Main {
public static void main(String[] args) {
Collection col = new ArrayList();
col.add(new Book("三国演义","罗贯中",10.1));
col.add(new Book("小李飞刀","古龙",5.1));
col.add(new Book("红楼梦","曹雪芹",34.6));
Iterator iterator = col.iterator();
while(iterator.hasNext()){//判断迭代器是否为空
Object obj = iterator.next();
System.out.println(obj);
}
iterator = col.iterator(); //重置迭代器
while(iterator.hasNext()){
Object obj = iterator.next();
System.out.println(obj);
}
}
}
class Book{
private String name;
private String author;
private double price;
public Book(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public String getAuthor() {return author;}
public void setAuthor(String author) {this.author = author;}
public double getPrice() {return price;}
public void setPrice(double price) {this.price = price;}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
P503 集合增强for
语法如下:
for(元素类型 元素名:集合名或数组名){
访问元素
}
增强for的底层仍然是迭代器,能够遍历集合和数组。
P505 List接口方法
List接口基本介绍:
1.往list集合中添加的元素是有序的,可以理解为队列,先进先出。
2.list集合里面的元素可以重复。
方法:
list.indexOf(对象名称) 可以返回该对象所在位置
list.add(下标,对象名称) 可以在下标的位置插入对象,原本的对象后移
list.set(下标,对象名称) 可以将下标位置的元素改为新的对象
list.subList(开始位置下标,结束位置下标) 可以返回开始到结束的对象,前闭后开,取不到结束位置
P508 List排序练习
public class Main {
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Books("红楼梦","曹雪芹",100));
list.add(new Books("西游记","吴承恩",10));
list.add(new Books("水浒传","施耐庵",9));
list.add(new Books("三国演义","罗贯中",80));
sort(list);
for (Object o :list) {
System.out.println(o);
}
}
public static void sort(List list){
for(int i=0;i<list.size()-1;i++)
for(int j=0;j<list.size()-1-i;j++){
//取出对象Book
Books books1 = (Books) list.get(j);
Books books2 = (Books) list.get(j + 1);
if(books1.getPrice()> books2.getPrice()){
list.set(j,books2);
list.set(j+1,books1);
}
}
}
}
class Books{
private String name;
private String author;
private double price;
public Books(String name, String author, double price) {
this.name = name;
this.author = author;
this.price = price;
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public String getAuthor() {return author;}
public void setAuthor(String author) {this.author = author;}
public double getPrice() {return price;}
public void setPrice(double price) {this.price = price;}
@Override
public String toString() {return "名称:"+name+"\t\t价格:"+price +"\t\t作者:"+author;}
}
P509 ArrayList注意事项
ArrayList里面可以放入空值。
ArrayList是

本文分享了一套力扣刷题的策略和技巧,涵盖了从简单到难题目的复习方法,详细解析了多种经典算法题,如链表、字符串操作、二叉树遍历等,并提供了代码示例。
最低0.47元/天 解锁文章

724

被折叠的 条评论
为什么被折叠?



