什么是集合?
1.简称集,使用存储多个元素的容器
2.集合和数组的区别
- 元素性:
集合:引用类型(存储基本类型时自动装箱)
数组:基本类型、引用类型 - 元素个数
集合:不固定,可以任意扩容
数组:固定,不能改变容量,列如定义一个int类型长度为5的数组只能最多存入5个在多就不行了 集合的好处
不受容器大小限制,可以随时添加、删除元素 提供了大量操作元素的方法(判断、获取等)
3.集合简介
java的集合体系
单例集合(Collection) List:ArrayList Set: HashSet
双列集合(Map:key,value)
Map:HashMap
一、List集合特点应用
1.List集合的特点
- 特点:可重复、有序(存取顺序相同)
- 应用:List list = new ArrayList();父接口指向子类对象
2.需求
- 往List集合中添加3个动物,然后遍历
2.1、创建动物实体类
package list;
public class Animal {
private String name;
private Integer age;
public Animal() {}
public Animal(String name, Integer age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Animal{" + "name='" + name + '\'' + ", age=" + age + '}';
}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public Integer getAge() {return age;}
public void setAge(Integer age) {this.age = age;}
}
2.2、动物测试类
package list;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Text {
public static void main(String[] args) {
//创建集合对象
List list =new ArrayList();
//创建元素对象
Animal animal1 = new Animal("狗",4);
Animal animal2 = new Animal("狗",4);
Animal animal3 = new Animal("猫",6);
Animal animal4 = new Animal("狮子",9);
//将元素添加到对象中
list.add(animal1);
list.add(animal2);
list.add(animal3);
list.add(animal4);
//List常用的一些方法
//获取索引为2的元素
Object obj = list.get(2);
System.out.println("索引为2的元素是:"+obj);
//获取集合元素的个数
System.out.println("集合的长度为:"+list.size());
}
2.2.1、遍历集合
==直接打印集合==
System.out.println("----------直接打印集合--------------------");
//直接打印集合
System.out.println(list);
==普通遍历集合==
System.out.println("----------普通遍历集合--------------------");
//普通遍历集合
for (int i = 0; i < list.size(); i++) {
Object obj2 = list.get(i);
System.out.println("索引为"+i+"的元素是"+obj2);
}
==增强for循环遍历集合==
System.out.println("----------增强for循环遍历集合--------------------");
//增强for循环遍历集合
int i =0;
for (Object obj3:list) {
System.out.println("索引为"+(i++)+"的元素是"+obj3);
}
2.2.2、通过迭代器遍历集合:
1. 为什么需要迭代器?
- 对过程的重复,称为迭代。
- 迭代器是遍历Collection集合的通用方式,可以在对集合- - 遍历的同时进行添加、删除等操作。
2. 迭代器的常用方法
- next():返回迭代的下一个元素对象
- hasNext(O:如果仍有元素可以迭代,则返回true
注意:列表选代器是List体系独有的遍历方式,可以在对集合遍历的同时进行添加、删除等操作。但是必须通过调用列表选代器的方法来实现
==通过普通迭代器遍历集合==
System.out.println("-----------通过普通迭代器遍历集合------------------");
//通过普通迭代器遍历集合
//使用步骤:
// 1,根据集合对象获取其对象的选代器对象
Iterator it= list.iterator();
// 判断选代器中是否有元素
while (it.hasNext()){//如果迭代器中有元素,就一直迭代
//如果有就获取元素
Object obj4 = it.next();
System.out.println(obj4);
}
==通过列表迭代器遍历集合==
System.out.println("-----------通过列表迭代器遍历集合------------------");
//列表迭代器使用
//需求:判断集合中如果有字符串“葡萄”,就在其后边添加一个新的字符串“梨子”
List list2 = new ArrayList();
list2.add("苹果");
list2.add("香蕉");
list2.add("葡萄");
//使用步骤:
// 1,根据集合对象获取其对象的选代器对象
ListIterator lit = list2.listIterator();
// 判断选代器中是否有元素
while (lit.hasNext()){//如果迭代器中有元素,就一直迭代
//如果有就获取元素
Object obj4 = lit.next();
if("葡萄".equals(obj4)){
//必须通过调用列表选代器的方法来实现
lit.add("梨子");
}
System.out.println(obj4);
}
//打印新的list2的值
System.out.println(list2);
}
总结:
普通的选代器在遍历集合的同时不能添加或者删除元素,否则会报:并发修改异常
列表选代器在適历集合的同时可以修改集合中的元素(添加,删除等),必须使用列表选代器中的方法.