Java集合零基础必看Part1

Java集合==Day1

  1. 集合可以储存多个数据。无需定义长度,集合会动态增加或减少长度,只能储存引用类型数据
  2. 数组也可以储存多个同种数据,需要定义长度,可以储存引用类型和基本数据类型两种

数量固定用后者,反之前者

在这里插入图片描述

1.1Collecion接口

Collection主要是List、Set Queue接口的父接口,所以他的方法在子接口中都能调用

常用方法:添加对象、删除对象、清空集合、判断集合是否为空

特点:元素可重复、无序

常用方法

public class Demo2 {
    public static void main(String[] args) {
        Collection cc = new ArrayList();//向上转型,此时能调用父类子类共有方法,但是ArrayList继承了该接口,所以父类的方法全部可以调用
        Collection cc2 = new ArrayList();
        Collection cc3 = new ArrayList();
		//1.add(E e)
       
        //cc2.add("cc2的数据");
        cc2.add(66);


        cc.add("==1==Data1");
        cc.add("==2=="+9999);
        cc.add("==3=="+true);
        cc.addAll(cc2);//添加另一个集合到一个集合中
        System.out.println(cc.add(66));//add(E e)的有返回值且是布尔类型
        //2 contains(E e)
        System.out.println(cc.contains(66));
        //3 containsAll(Collection<?>)
        System.out.println("======containsAll  Test====================================");
        System.out.println(cc2.containsAll(cc));
        System.out.println("======containsAll  Test====================================");
        System.out.println(cc.containsAll(cc2));
        //4 equals(E e)

        System.out.println(cc2.equals(66));//false
        System.out.println(cc.equals(9999));//false
        //5 equals方法只能在子类有序存储中实现
        ArrayList aa = new ArrayList();
        aa.add(666);
        System.out.println(aa.get(0).equals(666));//输出为true

        //6 hasCode()isEmpty()
        //遍历=====iterator 和foreach(){}
        //1.foreach
        System.out.println("======foreach     ====================================");
        for (Object traverse:cc) {
            System.out.println("遍历cc:"+traverse);
        }

        System.out.println("====== 7 iterator    ====================================");
        Iterator i1 = cc.iterator();
        while(i1.hasNext()){
            System.out.println("iterator traverse:"+i1.next());
        }

        //parallelStrean()
        //8 remove(E e)   9 removeAll( C c) 返回值布尔类型
        cc.remove(66);
        
        //10  size()
        System.out.println("size==="+cc.size());
        
        //11.clear()
       cc.clear();
        


    }
}

其他

iterator工作原理

在这里插入图片描述

  1. 判断游标后面是否有元素,有就返回此元素,并将位置移动到下一个位置之前

1.2List集合

有序集合(能通过下标访问数据) 可重复存放元素 每个元素都有对应的索引

超越Collection接口的方法:iterator add remove equals hasCode

LIst有一个特殊迭代器 ListIterator

常用方法

public class ListDemo2 {
    public static void main(String[] args) {
        List list = new ArrayList();
        //List继承Collection接口因此其超类的方法都具有,所以此处只实现List接口特有的方法
        //1.add(int index,E e)
        list.add(0,"==1==:Data1");
        list.add(1,"==2==:Data2");
        list.add(2,"==3==:Data3");
        list.add(3,"==4==:Data4");
        list.add(4,8888);
        //2. addAll(int index,E e)
        //3. get(int index)
        System.out.println(list.get(1));//Data2
        //4. indexOf(E e)
        System.out.println("========   indexOf     ==============================");
        System.out.println("第一次出现该数据的索引:"+list.indexOf("Data2"));//若无该数据则返回-1
        System.out.println("第一次出现8888该数据的索引:"+list.indexOf(8888));
        //5. lastIndexOf(E e)
        //遍历查看另一个代码块
        //6 remove( E e) remove(int index)
        list.remove(0);
        //7 set(int index , E e)取代index位置上的元素为e
        list.set(0,6666);
        System.out.println(list);
    }
}

List遍历

  1. for循环

  2. foreach

  3. iterator

  4. listIterator(特有)

public class ListTraverse {
    public static void main(String[] args) {
        List list2 = new ArrayList();
        list2.add(0);
        list2.add(1);
        list2.add(2);
        list2.add(3);
        list2.add(4);
        list2.add(5);
        list2.add(6);
     
     
     
        System.out.println("========for循环       ==============================");
        for (int a = 0;a<list2.size();a++){
            System.out.println(list2.get(a));
        }
        System.out.println("========       ==============================");
        System.out.println("======== foreach      ==============================");
        for (Object traverse:list2
             ) {
            System.out.println("ListTraverse:"+traverse);
        }
        System.out.println("========       ==============================");
        System.out.println("========iterator       ==============================");
        Iterator iterator = list2.iterator();
        while (iterator.hasNext()){
            System.out.println("ListTraverse:"+iterator.next());
        }
        System.out.println("========       ==============================");
        System.out.println("========listIterator       ==============================");
        ListIterator listIterator = list2.listIterator();
        while (listIterator.hasNext()){
            System.out.println("正向输出:"+listIterator.next());
        }
        System.out.println("======== listIterator正向输出后的反向输出      ==============================");
        //hasPrevious 是将游标从右到左
        while (listIterator.hasPrevious()){
            System.out.println("反向输出LL:"+listIterator.previous());
           //感兴趣的可以看看previousIndex()
        }
    }
}

1.3ArrayList

ArrayList extends List &List extends Collection 所以Collection和List接口所拥有的方法ArrayList全部拥有,且基本与上文常用方法一致,不在赘述,但是equals方法在此类中被重写,上文已经描述

底层和数组集合有关 特点快:遍历快,访问快 有序 可重复 缺点:插入删除较慢

ArrayList(线程不安全) 不同步

泛型

用于限制集合存储同种类型 ==ArrayList==E全部采用包装类

  • 好处

    大多数情况下,集合存储的都是同一类型的数据

    • 安全性高。消除了绝大部分类型转换问题,增加了维护性和可读性

    • 消除了强制类型转化,减少了出错率

      若采用add输入,add(Object obj)无论输入何值,都会将其先转换成包装类后再存储

    • 增加了性能

泛型代码声明
public class ArrayListDemoFinal {
    public static void main(String[] args) {
       ArrayList<String> arrayList0    = new ArrayList<String>();
       ArrayList<Integer> arrayList1   = new ArrayList<Integer>();
       ArrayList<Boolean> arrayList2   = new ArrayList<Boolean>();
       ArrayList<Byte> arrayList3      = new ArrayList<Byte>();
       ArrayList<Character> arrayList4 = new ArrayList<Character>();
       ArrayList<Float> arrayList5     = new ArrayList<Float>();
       ArrayList<Double> arrayList6    = new ArrayList<Double>();
       ArrayList<Short> arrayList7     = new ArrayList<Short>();
       ArrayList<Long> arrayList8      = new ArrayList<Long>();
    }
}

欢迎指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值