Java————集合框架——list(ArrayList)

目录

 

一: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循环

五:本文仅供自己参考


 

一:List接口(使用的初步介绍)

1:List集合的特征

——:第一个是有序;

——:第二个集合可以重复;

(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接口中重要的实现类:

(1)ArrayList集合:ArrayList即数组列表(可变的数组)

——: 声明方法: List<String> list=new ArrayList<String>(); 

——: 优点:可以根据索引位置对集合进行快速的随机访问 

——:  缺点:向指定的索引位置插入对象或删除对象的速度较慢。                    

(2)LinkedList(用链表保存对象)

 ——: List<String> list2 =new LinkedList<String>();

 ——:优点:便于向集合中插入和删除对象

 ——: 缺点:随机访问集合中的对象时,效率较慢。

三:说明ArrayList实现类(数组列表)

1:与数组的区别

(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());
}

2:ArrayList的常用的方法

ArrayList 通过add()          添加元素
               通过set()           替换元素
               通过get()           取出元素
               通过size()         这个方法,返回列表中元素的个数,//相当于数组中length
               通过clear()        清空元素
               通过isEmpty()   判断集合中是否有内容,true表示集合为空也就是没有内容
               通过remove()    删除一个元素//,我们可以根据索引删除,还可以根据具体的对象进行删除
               通过toArray()    是将集合直接转化为Ojbect[]数组。
                                       两种方法,带参数 和 不带参数的。
 

(1)增加

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();
}

(2)contains判断是否存在

通过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")));


}

运行结果:

(3)获取指定位置的对象

通过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));//超出了范围会报错

}

运行结果:

(4)获取对象所处的位置indexOf

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));
}

运行结果:

(5)删除

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);

}

运行结果:

(6)替换

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);

}

运行结果:

(7)获取大小:size

size 用于获取ArrayList的大小

代码:

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());
}

运行结果:

(8)转换为数组

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);
}

运行结果:

(9)addAll:把另一个容器所有对象都加进来:

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);
}

运行结果:

(10)清空:clear 清空一个ArrayList

代码:

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);
}

运行结果:

四:ArrayList的遍历。

1:for循环遍历

代码

public static void main(String[] args){
    List<Student> student=new ArrayList<Student>();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println(student);

    //第一种:for循环遍历
    for(int i=0;i<student.size();i++){
        Student s=student.get(i);
        System.out.println(s);
    }
}

运行结果:

2:迭代器遍历

代码:

public static void main(String[] args){
    List<Student> student=new ArrayList<Student>();
    for(int i=0;i<5;i++){
        student.add(new Student("Fern"+i));
    }
    System.out.println(student);

    //第二种:迭代器遍历
    Iterator<Student> it=student.iterator();
    while(it.hasNext()){
        Student s=it.next();
        System.out.println(s);
    }//使用while的Iterator

    for(Iterator<Student> iterator=student.iterator();iterator.hasNext();){
        Student s=(Student)iterator.next();
        System.out.println(s);
    }//迭代器的for写法
}

运行结果:

3:增强型for循环

代码:

public static void main(String[] args){
    List<Student> student=new ArrayList<Student>();
    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);
    }
}

结果:

五:本文仅供自己参考

猜你喜欢

转载自blog.csdn.net/Jiangshan11/article/details/81542288