集合 List ArrayList

1. 集合

1.1 泛型

  1. 泛型,不是指一种具体的类型,而是说,这里有个类型需要设置,那么具体设置成什么类型,得看具体的使用

  2. 泛型通常与集合一起使用,用来限制集合中元素的类型 泛型设置了什么类型,那么这个集合只能存这个泛型类型的数据

  3. 泛型是一颗“语法糖”: 1)泛型可以把报错的时机提前,用于在编译期检查集合的数据类型,只要不是规定的类型,就报错,通不过编译 2)泛型只在编译时生效,编译通过以后,说明符合语法,泛型就会被抛弃,字节码文件中没有泛型

  4. 泛型的类型必须使用引用类型,比如Student、Integer

  5. 泛型方法:如果在方法上使用泛型,必须两处同时出现: 1)一个是方法的参数列表中的参数类型 2)一个是返回值前的泛型类型,表示这是一个泛型方法

1.2 Collection

  1. Collection是集合层次中的根接口

  2. 集合的继承关系

     

  3. 是集合层次的根接口,学习抽象父级的公共方法

Collection集合方法总结

单个集合的操作:

boolean add(E e) 将指定元素添加到集合中 void clear() 清空集合 boolean contains(Object o) 判断本集合是否包含指定的元素 boolean equals(Object o) 比较集合对象与参数对象o是否相等 int hashCode() 返回本集合的哈希码值。 boolean isEmpty() 判断本集合是否为空 boolean remove(Object o) 从本集合中移除指定元素o int size() 返回本集合中元素的个数 Object[] toArray() 将本集合转为数组

集合间的操作:

boolean addAll(Collection<> c) 将c集合中的所有元素添加到本集合中 boolean containsAll(Collection<> c) 判断本集合是否包含c集合的所有元素 boolean removeAll(Collection<> c) 移除本集合中属于参数集合c的所有元素 boolean retainAll(Collection<> c) 保留本集合与参数集合c的公共元素

集合的迭代:

Iterator iterator() 返回本集合的迭代器

  1. 测试常用方法 可以查询API手册进行方法的练习

    package cn.tedu.collection;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Iterator;
    
    /*本类用于测试Collection接口*/
    public class TestCollection {
        public static void main(String[] args) {
            //1.创建Collection相关对象
            //<Integer>是泛型,用来约束集合中的数据类型,不能是基本类型,必须是引用类型
            Collection<Integer> c=new ArrayList<Integer>();
            //2.1测试集合中的常用方法
            c.add(100);
            c.add(200);
            c.add(300);
            c.add(400);
            c.add(500);
            System.out.println(c);
           // c.clear();//清空集合
            System.out.println(c);//[]
            System.out.println(c.hashCode());//127240651,获取当前对象的哈希码值
            System.out.println(c.toString());//不推荐写,底层自动调用
            System.out.println(c.equals(200));//false,集合对象c与集合中的元素200不相等
            System.out.println(c.contains(200));//true,用来判断集合中是否包含指定的元素200
            System.out.println(c.isEmpty());//判断c集合是否为空
            System.out.println(c.remove(100));//true,用于移除集合中指定的元素
            System.out.println(c);//[200, 300, 400, 500]
            System.out.println(c.size());//4
            Object[] objects = c.toArray();//将指定的集合转为object类型的数组
            System.out.println(objects);//[Ljava.lang.Object;@1540e19d
            System.out.println(Arrays.toString(objects));//[200, 300, 400, 500]
            //2.2测试多个集合间的操作
            Collection<Integer> c2=new ArrayList<Integer>();
            c2.add(2);
            c2.add(4);
            c2.add(5);
            System.out.println(c2);//[2, 4, 5]打印查看集合中的元素
           c.addAll(c2);//将c2集合的所有元素添加到c集合中
            System.out.println(c);//[200, 300, 400, 500, 2, 4, 5]
            System.out.println(c.containsAll(c2));//是否包含c2的所有元素true
            c.removeAll(c2);//将c集合中属于c2集合的所有元素删除
            System.out.println(c);//[200, 300, 400, 500]
            System.out.println(c.containsAll(c2));//false
            c.add(5);
            System.out.println(c);//[200, 300, 400, 500, 5]
            System.out.println(c2);//[2, 4, 5]
            System.out.println(c.retainAll(c2));//true,保留c集合中也属于c2集合的所有元素
            System.out.println(c);//[5]
    
            //3.集合的迭代/集合的遍历
            /**
             * 迭代步骤:
             * 1.获取集合的迭代器
             * 2.判断集合中是否仍有下一个元素可以迭代
             * 3.获取当前迭代到的元素
             */
            Iterator<Integer> it = c2.iterator();
            while (it.hasNext()){
                System.out.print(it.next()+" ");//2 4 5
            }
    
        }
    
    }
    

2. List接口

List接口的特点

  1. List集合是有下标的

  2. List集合是有顺序的

  3. List集合可以存放重复的数据

List集合方法总结

单个集合间的操作

void add(int index, E element) 在集合的指定下标index处插入指定元素element E get(int index) 返回本集合中指定下标index处的元素 E remove(int index) 移除本集合中指定下标index处的元素 E set(int index, E element) 用参数元素element替换集合中指定下标index处的元素 int indexOf(Object o) 判断指定元素o在本集合中第一次出现的下标,如果不存在,返回-1 int lastIndexOf(Object o) 判断指定元素o在本集合中最后一次出现的下标,如果不存在,返回-1 List subList(int fromIndex, int toIndex) 截取子集合,包含formidex处的元素,不包含toIndex处的元素

集合间的操作与集合的迭代

boolean addAll(int index, Collection<> c) 将参数集合c中的所有元素,插入到本集合中指定的下标index处 ListIterator listIterator() 返回此列表元素的迭代器,这个是List自己的,不太常用,可以逆序迭代

package cn.tedu.collection;

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

/*1.本类用于测试List接口*/
public class TestList {
    public static void main(String[] args) {
        //1.创建lsit多态对象,注意List是一个接口,不可以实例化
        List<String> list=new ArrayList<>();
        //2.测试继承自Collection中的方法
        list.add("大力娃");
        list.add("千顺娃");
        list.add("头铁娃");
        list.add("喷火娃");
        list.add("喷水娃");
        list.add("隐身娃");
        list.add("小紫娃");
        System.out.println(list);//[大力娃, 千顺娃, 头铁娃, 喷火娃, 喷水娃, 隐身娃, 小紫娃]
//        list.clear();清空集合
        //System.out.println(list);//[]
        System.out.println(list.contains("喷火娃"));//true,判断是是否包含指定元素
        System.out.println(list.equals("喷火娃"));//false,集合对象与其中一个元素不相等
        System.out.println(list.isEmpty());//false,判断集合是否为空在
        System.out.println(list.remove("小紫娃"));//移除集合中元素的个数
        System.out.println(list);//[大力娃, 千顺娃, 头铁娃, 喷火娃, 喷水娃, 隐身娃]
        System.out.println(list.size());//6,获取集合中元素的个数
        System.out.println(Arrays.toString(list.toArray()));//[大力娃, 千顺娃, 头铁娃, 喷火娃, 喷水娃, 隐身娃]将集合转为数组

        //3.测试List接口自己的方法,由于List是有顺序的,所以可以根据索引来操作集合中的元素
        list.add("小蝴蝶");//默认的添加方法追加在末尾
        list.add(1,"小蝴蝶");//向指定的索引处添加元素
        list.add(3,"蛇精");
        System.out.println(list);
        System.out.println(list.indexOf("小蝴蝶"));//1,获取元素第一次出现的索引值
        System.out.println(list.lastIndexOf("小蝴蝶"));//8,获取元素最后一次出现的索引值
        System.out.println(list.remove(5));//根据指定的索引值删除结合中元素
        System.out.println(list);//[大力娃, 小蝴蝶, 千顺娃, 蛇精, 头铁娃, 喷水娃, 隐身娃, 小蝴蝶]
        System.out.println(list.get(3));//蛇精,获取集合中指定索引处的元素
        System.out.println(list);//[大力娃, 小蝴蝶, 千顺娃, 蛇精, 头铁娃, 喷水娃, 隐身娃, 小蝴蝶]
        System.out.println(list.set(7, "蝎子精"));//修改指定索引处的元素蝎子精,会将被修改的元素返回
        System.out.println(list);//[大力娃, 小蝴蝶, 千顺娃, 蛇精, 头铁娃, 喷水娃, 隐身娃, 蝎子精]

        //4.测试集合间的操作
        List<String> list2=new ArrayList<>();
        list2.add("1");
        list2.add("2");
        list2.add("3");
        list2.add("4");
        System.out.println(list2);
        System.out.println(list.addAll(list2));//true
        System.out.println(list);//[大力娃, 小蝴蝶, 千顺娃, 蛇精, 头铁娃, 喷水娃, 隐身娃, 蝎子精, 1, 2, 3, 4]
        System.out.println(list.addAll(1,list2));//true将list2集合的所有元素按照指定索引添加到List集合
        System.out.println(list);//[大力娃, 1, 2, 3, 4, 小蝴蝶, 千顺娃, 蛇精, 头铁娃, 喷水娃, 隐身娃, 蝎子精, 1, 2, 3, 4]
        System.out.println(list.containsAll(list2));//true,判断list2是否包含list2集合中的元素
        System.out.println(list.removeAll(list2));//删除list集合中属于list2集合的所有元素
        System.out.println(list);


        //迭代集合的方法
        //for循环
        for (int i = 0; i <list.size() ; i++) {
            System.out.print(list.get(i)+" ");//大力娃 小蝴蝶 千顺娃 蛇精 头铁娃 喷水娃 隐身娃 蝎子精
        }
        System.out.println();
        //foreach循环
        for (String sd:
             list) {
            System.out.print(sd+" ");//大力娃 小蝴蝶 千顺娃 蛇精 头铁娃 喷水娃 隐身娃 蝎子精
        }
        System.out.println();
        //迭代器
        Iterator<String> it= list.iterator();
        while (it.hasNext()){
            System.out.print(it.next()+" ");//大力娃 小蝴蝶 千顺娃 蛇精 头铁娃 喷水娃 隐身娃 蝎子精
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡不醒的小小秦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值