JAVA集合(一)

一、java集合概述

 

二、集合框架

JAVA集合具体可分为两种体系:1.Collection接口(集合) 2. Map接口  ( 映射 ) 

      

 |----Collection接口:单列集合,用来存储一个一个的对象
*          |----List子接口:存储有序的、可重复的数据。  -->“动态”数组,长度是可变的
*              |--实现类--ArrayList、LinkedList、Vector
*
*          |----Set子接口:存储无序的、不可重复的数据   -->类似于高中讲的“集合”
*              |--实现类--HashSet、LinkedHashSet、TreeSet
*

|----Map接口:双列集合,用来存储一对(key - value)一对的数据   -->高中函数:y = f(x)
*              |--实现类--HashMap、LinkedHashMap、TreeMap、Hashtable、Properties
  • key-value的映射关系和函数一样,一个key只能对应一个value,但是一个value可以对应不同key。

 

三、Collection接口中的11个方法(常用):

            

 //Collection接口的实现类ArrayList
        Collection c = new ArrayList();//接口的引用指向实现类的对象

        //void add(Object obj);向集合中添加对象
        c.add("AA");
        c.add(123);//自动装箱,变为Integer类型
        c.add("BB");
        c.add("AA");//可以重复
        c.add(new Date());//与数组的区别:可以装不同类型的对象

        //int size():获取长度
        System.out.println(c.size());//5

        Collection c1 = new ArrayList();
        c1.add("AAAAA");
        c1.add("BBBBB");

        //void addAll(Collection c):将一个集合中的所有对象添加到另一集合
        c.addAll(c1);

        //void size():返回集合中元素的个数(注意:在数组中,长度和元素个数不一定相等,集合中肯定相等)
        System.out.println(c.size());//7
  • 这里只是拿Collection的list子接口的实现类之一:ArrayList  来演示这11中方法
  • 也就是说:list接口的父接口Collection的引用也能指向list接口的实现类ArrayList,因为ArrayList实现了list接口,就代表着重写了list接口中的所有抽象方法(包括其继承的接口Collection中的方法),因此ArrayList也是Collection的实现类。
  • ArrayList中存储的是有序的、可重复的集合元素
        //void clear():清空集合中元素
        c1.clear();
        System.out.println(c1.size());//0

        //boolean contains(Object obj)
        System.out.println(c.contains("AA"));//true

        person10 p1 = new person10("tom", 10);
        person10 p2 = new person10("tom", 10);
        c.add(p1);
        System.out.println(c.contains(p2));//true

        //boolean containsAll(Collection coll1):判断集合1中的元素是不是都在当前集合中

        //boolean remove(Object obj):移除对象obj
        System.out.println(c);//[AA, 123, BB, AA, Fri Dec 18 09:56:57 CST 2020, AAAAA, BBBBB, day04.person10@677327b6]
        c.remove("AA");
        c.remove(p2);
        System.out.println(c);//[123, BB, AA, Fri Dec 18 09:56:21 CST 2020, AAAAA, BBBBB]

        //boolean removeAll(Collection coll):删除集合coll与当前集合交集的部分,也就是说coll不一定是当前集合的子集
        Collection c2 = Arrays.asList(123, "BB",p1,123456);//直接向集合c中添加多个元素
        c.removeAll(c2);
        System.out.println(c);//[AA, Fri Dec 18 10:01:42 CST 2020, AAAAA, BBBBB]
  • 数组和集合的区别:数组在一开始声明时就已经确定好长度了,但是如果不赋值,那么该位置就为null。集合可以动态添加元素,长度不受限制
  • contains(Object obj):其实该方法内部调用了传入的对象的equals()方法(Object类中的方法)—obj.equals(........),将obj和集合中的对象一个一个进行比较判断是否相等——obj.equals(集合中的每一个对象)
  • person类是自定义类,如下图,其中重写了其Object父类中的equals方法,使equals从原先的比较地址值变为比较内容
  • 因此:System.out.println(c.contains(p2));//true ,如果不重写的话就是false(比较地址)

class person10 {
    private String name;
    private int age;

    person10(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        person10 person10 = (person10) o;
        return age == person10.age &&
                Objects.equals(name, person10.name);
    }

}
  • remove(Object obj)方法也调用的obj.equals(),与上述一样,只要和参数里传入的内容相同的对象,就会被移除




  • 方法⑦:boolean retainAll(Collection coll):把当前集合修改为——当前集合与coll的交集,并且如果交集不为空则返回true,否则false。并且对coll集合不会有影响
  • 方法⑧:boolean equals(Collection):判断集合是否相等,如果是ArrayList实现的接口,会按顺序比较,顺序不同也会认为是false
  • 方法⑨:Object[] toArray():变成对象数组



 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值