List、ArrayList、Vector、LinkedList的使用

package com.collection.list;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * @ClassName: Demo1
 * @Author: 南冥有猫不须铭
 * @Date: 2021/6/30-9:45
 * @Description: List子接口的使用
 * 特点:有序、有下标、元素可重复
 */

public class Demo1 {
    public static void main(String[] args) {
        //先创建集合对象
        List list = new ArrayList();
        //1.添加元素
        list.add("苹果");
        list.add("小米");
        list.add(0,"华为");//在最前面插入(指定位置插入)
        System.out.println("元素个数:"+list.size());//元素个数:3
        System.out.println(list.toString());//[华为, 苹果, 小米]
        //2.删除元素
        //list.remove("苹果");
        //list.clear();//清空
        //list.remove(0);//删除索引(下标)为0的元素,也就是第一个元素
        //System.out.println("删除之后:"+list.size());//删除之后:2
        //System.out.println(list.toString());//[苹果, 小米]
        //3.遍历
        //3.1使用for遍历(List集合有下标,可以使用for循环)
        System.out.println("--------------3.1使用for遍历--------------");
        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));//get()可以根据下标(索引)获取元素
        }
        //3.2使用增强for
        System.out.println("--------------3.2使用增强for--------------");
        for (Object object : list) {
            System.out.println(object);
        }
        //3.3使用迭代器
        System.out.println("--------------3.3使用迭代器--------------");
        Iterator it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        //3.4使用列表迭代器(和Iterator的区别:ListIterator可以向前或向后遍历、添加、删除、修改元素)
        ListIterator lit = list.listIterator();
        System.out.println("--------------3.4使用列表迭代器从前往后--------------");
        while (lit.hasNext()){
            System.out.println(lit.nextIndex()+":"+lit.next());//打印索引和元素
        }
        System.out.println("--------------3.4使用列表迭代器从后往前--------------");
        while (lit.hasPrevious()){  //接着上面从前往后迭代到最后一个之后,再从后往前
            System.out.println(lit.previousIndex()+":"+lit.previous());//打印索引和元素
        }
        //4.判断
        System.out.println(list.contains("苹果"));//true
        System.out.println(list.isEmpty());//false
        //5.获取位置
        System.out.println(list.indexOf("华为"));//0  (即获取索引)
    }
}

package com.collection.list;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName: Demo2
 * @Author: 南冥有猫不须铭
 * @Date: 2021/6/30-11:09
 * @Description: List的使用
 */
public class Demo2 {
    public static void main(String[] args) {
        //创建集合
        List list = new ArrayList();

        //1.添加数字数据(自动装箱)
        list.add(20);//自动装箱:20已经从基本类型变成了包装类(引用类型)
        list.add(30);
        list.add(40);
        list.add(50);
        list.add(60);
        System.out.println("元素个数:"+list.size());//元素个数:5
        System.out.println(list.toString());//[20, 30, 40, 50, 60]

        //2.删除操作
        //list.remove(20);//报错(下标越界异常)   这里的删除是根据索引(下标)来进行的,括号里的数字是集合中元素的下标,现在集合下标范围(0~4)
        //list.remove(0);//删除集合中的第一个元素
        //list.remove((Object) 20);//可以把20强制转成Object类型,然后就可以直接删除20了
        list.remove(new Integer(20));//new一个Integer(包装类),就可以删除了
        System.out.println("删除之后:"+list.size());//删除之后:4
        System.out.println(list.toString());//[30, 40, 50, 60]

        //3.补充方法subList:返回子集合,含头不含尾
        List sublist = list.subList(1,3);//包含下标为1的元素,不包含下标为3的元素
        System.out.println(sublist.toString());//[40, 50]

    }
}

package com.collection.list;

import com.collection.collection.Student;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;

/**
 * @ClassName: Demo3
 * @Author: 南冥有猫不须铭
 * @Date: 2021/6/30-14:45
 * @Description: ArrayList的使用
 * 存储结构:数组,查找遍历速度快,增删慢
 */
public class Demo3 {
    public static void main(String[] args) {
        //创建集合  size 0,容量 0;扩容原来的1.5倍
        ArrayList arrayList = new ArrayList<>();
        //1.添加元素
        Student s1 = new Student("刘德华",20);//这里用的是collection包中的Student类
        Student s2 = new Student("郭富城",22);
        Student s3 = new Student("梁朝伟",18);
        arrayList.add(s1);
        arrayList.add(s2);
        arrayList.add(s3);
        arrayList.add(s3);
        System.out.println("元素个数:"+arrayList.size());//元素个数:4
        System.out.println(arrayList.toString());//[Student{name=刘德华, age=20}, Student{name=郭富城, age=22}, Student{name=梁朝伟, age=18}, Student{name=梁朝伟, age=18}]
        //2.删除元素
        //arrayList.remove(s1);
        arrayList.remove(new Student("刘德华",20));//equals(this==obj)方法比较的是引用地址,要重写equals方法(在Student类中)
        System.out.println("删除之后:"+arrayList.size());//删除之后:3
        System.out.println(arrayList.toString());//[Student{name=郭富城, age=22}, Student{name=梁朝伟, age=18}, Student{name=梁朝伟, age=18}]
        //3.遍历元素【重点】
        //3.1使用迭代器
        System.out.println("------------3.1使用迭代器------------");
        Iterator it = arrayList.iterator();
        while (it.hasNext()){
            Student s = (Student) it.next();//强制转换 Object-->Student
            System.out.println(s.toString());
        }
        //3.2使用列表迭代器
        ListIterator lit = arrayList.listIterator();
        System.out.println("------------3.2使用列表迭代器(正序)------------");
        while (lit.hasNext()){
            Student s = (Student) lit.next();//强制转换 Object-->Student
            System.out.println(s.toString());
        }
        System.out.println("------------3.2使用列表迭代器(逆序)------------");
        while (lit.hasPrevious()){
            Student s = (Student) lit.previous();//强制转换 Object-->Student
            System.out.println(s.toString());
        }
        //4.判断
        System.out.println(arrayList.contains(s2));//true
        System.out.println(arrayList.contains(new Student("梁朝伟",18)));//true    可以用new,因为equals()方法已经重写过了
        System.out.println(arrayList.isEmpty());//false
        //5.查找
        System.out.println(arrayList.indexOf(s1));//-1    s1在上面已经被删除了,所以不存在,返回-1
        System.out.println(arrayList.indexOf(new Student("梁朝伟",18)));//1    第一次出现下标为1,也就是排在第二
    }
}

package com.collection.list;

import java.util.Enumeration;
import java.util.Vector;

/**
 * @ClassName: Demo1
 * @Author: 南冥有猫不须铭
 * @Date: 2021/6/30-17:33
 * @Description: 演示Vector集合的使用
 * 存储结构:数组
 */
public class Demo4 {
    public static void main(String[] args) {
        //创建集合
        Vector vector = new Vector<>();
        //1.添加元素
        vector.add("草莓");
        vector.add("芒果");
        vector.add("西瓜");
        System.out.println("元素个数:"+vector.size());//元素个数:3
        //2.删除
        //vector.remove(0);
        //vector.remove("西瓜");
        //vector.clear();
        //3.遍历
        //使用枚举器
        Enumeration en = vector.elements();
        while (en.hasMoreElements()){
            String o = (String) en.nextElement();//强制转换 Object-->String
            System.out.println(o);
        }
        //4.判断
        System.out.println(vector.contains("西瓜"));
        System.out.println(vector.isEmpty());
        //5.Vector其他方法
        //firstElement()、lastElement()、elementAt();
    }
}

package com.collection.list;

import com.collection.collection.Student;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.ListIterator;

/**
 * @ClassName: Demo5
 * @Author: 南冥有猫不须铭
 * @Date: 2021/6/30-18:24
 * @Description: LinkedList的使用
 * 存储结构:双向链表
 */
public class Demo5 {
    public static void main(String[] args) {
        //创建集合
        LinkedList linkedList = new LinkedList<>();
        //1.添加元素
        Student s1 = new Student("刘德华",20);//这里用的是collection包中的Student类
        Student s2 = new Student("郭富城",22);
        Student s3 = new Student("梁朝伟",18);
        linkedList.add(s1);
        linkedList.add(s2);
        linkedList.add(s3);
        System.out.println("元素个数:"+linkedList.size());//元素个数:3
        System.out.println(linkedList.toString());

        //2.删除
        //linkedList.remove(s1);
        //linkedList.remove(new Student("刘德华",20));//之前在Student类中重写了equals()方法,所有这里可以用new
        //linkedList.clear();
        //System.out.println("删除之后:"+linkedList.size());//删除之后:2

        //3.遍历
        //3.1使用for遍历
        System.out.println("-----------3.1使用for遍历-----------");
        for (int i=0;i<linkedList.size();i++){
            System.out.println(linkedList.get(i));
        }
        //3.2使用增强for
        System.out.println("-----------3.2使用增强for-----------");
        for (Object object : linkedList) {
            Student s = (Student) object;//强制转换Obje-->Student
            System.out.println(s.toString());
        }
        //3.3使用迭代器
        System.out.println("-----------3.3使用迭代器-----------");
        Iterator it = linkedList.iterator();
        while (it.hasNext()){
            Student s = (Student) it.next();
            System.out.println(s.toString());
        }
        //3.4使用列表迭代器
        System.out.println("-----------3.4使用列表迭代器-----------");
        ListIterator lit = linkedList.listIterator();
        while (lit.hasNext()){
            Student s = (Student) lit.next();
            System.out.println(s.toString());
        }

        //4.判断
        System.out.println(linkedList.contains(s1));//true
        System.out.println(linkedList.isEmpty());//false

        //5.获取
        System.out.println(linkedList.indexOf(s1));//0
    }
}

package com.collection.collection;

/**
 * @ClassName: Student
 * @Author: 南冥有猫不须铭
 * @Date: 2021/6/29-22:53
 * @Description: 学生类(Demo2)
 */
public class Student {
    private String name;
    private int age;

    //无参构造方法
    public Student() {
    }

    //带参构造方法
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    //get/set
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() { //重写toString()方法
        return "Student{" +
                "name=" + name +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object obj) { //重写equals()方法
        //1.判断是不是同一个对象
        if (this == obj) {
            return true;
        }
        //2.判断是否为空
        if (obj == null) {
            return false;
        }
        //3.判断是否是Student类型
        if (obj instanceof Student) {
            Student s = (Student) obj;//强制转换Object-->Student
            //4.比较属性
            if (this.name.equals(s.getName())&&this.age==s.getAge()){
                return true;
            }
        }
        //5.不满足条件返回false
        return false;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值