目录
一:List接口(使用的初步介绍)
1:List集合的特征
二:List接口中重要的实现类:
(1)ArrayList集合:ArrayList即数组列表(可变的数组)
(2)LinkedList(用链表保存对象)
三:说明ArrayList实现类(数组列表)
1:与数组的区别
2:ArrayList的常用的方法
(1)增加
(2)contains判断是否存在
(3)获取指定位置的对象
(4)获取对象所处的位置indexOf
(5)删除
(6)替换
(7)获取大小:size
size 用于获取ArrayList的大小
(8)转换为数组
(9)addAll:把另一个容器所有对象都加进来:
(10)清空:clear 清空一个ArrayList
四:ArrayList的遍历。
1:for循环遍历
2:迭代器遍历
3:增强型for循环
五:本文仅供自己参考
——:第一个是有序;
——:第二个集合可以重复;
(1)ArrayList和List:List是一个接口,ArrayLIst是List接口的实现类。
(常见的写法:会把引用声明为接口List类型)
public static void main(String[] args){
List ls=new ArrayList();
ls.add(9);
System.out.println(ls.size());
}
(2)List接口的方法:因为ArrayList实现了List接口,所以List接口的方法ArrayList都实现了。
——: 声明方法: List
——: 优点:可以根据索引位置对集合进行快速的随机访问
——: 缺点:向指定的索引位置插入对象或删除对象的速度较慢。
——: List
——:优点:便于向集合中插入和删除对象
——: 缺点:随机访问集合中的对象时,效率较慢。
(1)使用数组的局限性:声明为10的数组长度,不用的数组就浪费,超过10的个数,有放不下。
(2)ArrayList存放对象:为了解决数组的局限性,引入的容器类,最常见的容器类为ArrayList
容器的容量会随着对象的增加,自动增长,不用担心会出现数组的边界问题
public static void main(String[] args){
List ls=new ArrayList();
ls.add(9);
System.out.println(ls.size());
ls.add(10);
System.out.println(ls.size());
}
ArrayList 通过add() 添加元素
通过set() 替换元素
通过get() 取出元素
通过size() 这个方法,返回列表中元素的个数,//相当于数组中length
通过clear() 清空元素
通过isEmpty() 判断集合中是否有内容,true表示集合为空也就是没有内容
通过remove() 删除一个元素//,我们可以根据索引删除,还可以根据具体的对象进行删除
通过toArray() 是将集合直接转化为Ojbect[]数组。
两种方法,带参数 和 不带参数的。
add有两种用法
——:第一种是直接add对象,把对象加在最后面
——:第二种是在指定的位置加对象
public static void main(String[] args){
ArrayList a=new ArrayList();
for(int i=0;i<5;i++){//第一种
a.add(new Student("s1 "));
}
System.out.println(a);
Student sstudent = new Student("s2");
a.add(2,sstudent);//第二种
System.out.println(a);
System.out.println();
}
通过contains判断一个对象是否在容器中。 判断的标准:是否为同一个对象,而不是name是否相同
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
System.out.println("student的学生");
System.out.println(student);
Student student1=new Student("Jay");
student.add(student1);
System.out.println(student);
System.out.println(student.contains(student1));
System.out.println(student.contains(new Student("Fern1")));
}
运行结果:
通过get获取指定位置的对象,如果输入的下标越界,一样会报错。
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"));
}
System.out.println(student.get(4));
System.out.println(student.get(5));//超出了范围会报错
}
运行结果:
indexOf用于判断一个对象在ArrayList中所处的位置,与contains一样,判断标准是对象是否相同,而非对象的name值是否相等。
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"));
}
Student student1=new Student("Jay");
student.add(student1);
System.out.println(student);
System.out.println("Jay的位置"+student.indexOf(student1));
}
运行结果:
remove用于把对象从ArrayList中删除——heros.remove(specialHero);
remove可以根据下标删除ArrayList的元素——heros.remove(2);
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"));
}
Student student1=new Student("Jay");
student.add(student1);
System.out.println(student);
student.remove(2);
System.out.println("删除下标为2的对象");
System.out.println(student );
student.remove(student1);
System.out.println("删除student1");
System.out.println(student);
}
运行结果:
set用于替换指定位置的元素
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
Student student1=new Student("Jay");
student.add(student1);
System.out.println(student);
student.set(1,new Student("Fern5"));
System.out.println("把下标是1的元素,替换为Fern5");
System.out.println(student);
}
运行结果:
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
Student student1=new Student("Jay");
student.add(student1);
System.out.println(student);
System.out.println("获取ArrayList的大小");
System.out.println(student.size());
}
运行结果:
toArray可以把一个ArrayList对象转换为数组。
需要注意的是,如果要转换为一个Hero数组,那么需要传递一个Hero数组类型的对象给toArray(),这样toArray方法才知道,你希望转换为哪种类型的数组,否则只能转换为Object数组。
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
Student student1=new Student("Jay");
student.add(student1);
System.out.println(student);
Student s[]=(Student[])student.toArray(new Student[]{});
System.out.println("数组"+s);
}
运行结果:
addAll 把另一个容器所有对象都加进来
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
System.out.println("student的学生");
System.out.println(student);
ArrayList anotherStudent = new ArrayList();
anotherStudent.add(new Student("jiang1"));
anotherStudent.add(new Student("jiang2"));
anotherStudent.add(new Student("jiang3"));
anotherStudent.add(new Student("jiang4"));
System.out.println("anotherStudent的学生");
System.out.println(anotherStudent);
student.addAll(anotherStudent);
System.out.println("把anotherStudent的元素加入到student中");
System.out.println("合并后的student");
System.out.println(student);
}
运行结果:
代码:
public static void main(String[] args){
ArrayList student = new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
System.out.println("student的学生");
System.out.println(student);
student.clear();
System.out.println("使用clear清空");
System.out.println(student);
}
运行结果:
代码
public static void main(String[] args){
List student=new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
System.out.println(student);
//第一种:for循环遍历
for(int i=0;i
运行结果:
代码:
public static void main(String[] args){
List student=new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
System.out.println(student);
//第二种:迭代器遍历
Iterator it=student.iterator();
while(it.hasNext()){
Student s=it.next();
System.out.println(s);
}//使用while的Iterator
for(Iterator iterator=student.iterator();iterator.hasNext();){
Student s=(Student)iterator.next();
System.out.println(s);
}//迭代器的for写法
}
运行结果:
代码:
public static void main(String[] args){
List student=new ArrayList();
for(int i=0;i<5;i++){
student.add(new Student("Fern"+i));
}
System.out.println(student);
//增强型for写法
for(Student s:student){
System.out.println(s);
}
}
结果: