1.集合的好处
相比数组,他可以存储多种类型的元素,并且可以动态新增;
2. 集合分类
3.Collection接口
3.1常用方法
3.2迭代器-遍历
collection接口继承了Interable接口,collection的子类可以使用迭代器;
注意事项:
可以使用"itit"快速生成while()循环
3.3遍历方式2–for循环增强
快捷键大写的“I”可以直接快速生成一个增强版for循环
4.List接口
4.1 List常用方法
4.2List的三种遍历方式
4.4 程序:List排序练习
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
public class ListInterable_Exercise {
public static void main(String[] args) {
List list = new Vector();
list.add(new Book3("《红楼梦》",25.2,"曹雪芹"));
list.add(new Book3("《水浒传》",45.2,"施耐庵"));
list.add(new Book3("《西游记》",23.2,"吴承恩"));
System.out.println("===按价格排序前===");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
Book3 book = (Book3) iterator.next();
System.out.println(book);
}
sort(list);
System.out.println("===按价格排序后===");
iterator = list.iterator();
while (iterator.hasNext()) {
Book3 book = (Book3) iterator.next();
System.out.println(book);
}
}
public static void sort(List list){
//实现数组元素的冒泡排序
int listSize = list.size();
for(int i=0;i<listSize-1;i++){
for(int j=0;j<listSize-i-1;j++){
Book3 bookJA = (Book3) list.get(j);
Book3 bookJB = (Book3) list.get(j+1);
if(bookJA.price>bookJB.price){
list.set(j,bookJB);
list.set(j+1,bookJA);
}
}
}
}
}
class Book3{
String name;
Double price;
String author;
public Book3(String name, Double price, String author) {
this.name = name;
this.price = price;
this.author = author;
}
public Book3() {
}
@Override
public String toString() {
return "Book3{" +
"name='" + name + '\'' +
", price=" + price +
", author='" + author + '\'' +
'}';
}
}
5.ArrayList类
6.vector类
(1)ArrayList和vector的底层数组扩容机制对比
7. LinkList类
8.ArrayList和LinkList对比
9.Set接口
注:虽然添加的顺序和取出的顺序不一致,但取出的顺序只会有一个
9.1常用方法
10.Set接口实现类—HashSet类
(1)HashSet不能添加相同的元素
注意这里new 出来的两个内容是在堆中不同位置的;
11.程序:HashSet最佳实践
用重写equals() and hashCode()方法来实现
12.LinkedHashSet类—HashSet子类
13.Map接口
(1 )常用方法
(2)Map的六大遍历方式
14.HashMap类
15.HashTable类
16.集合
17.集合的练习
(1)
(2)
总注:集合这块儿如果只是应用没有很难,但是底层机制很复杂,难理解东西多