集合

作者: 廷裕同学 | 来源:发表于2020-01-10 10:37 被阅读0次

    数组特性:
    1. 只能存储同一种类型的元素(除开object类型的数组)。
    2. 数组一旦初始化长度就固定了。
    3. 数组中元素与元素之间的内存地址是连续的。

    需求:使用一个容器收集家人的兴趣爱好
    使用数组
    String[] arr = new String[??] 长度给多少都不合适

    集合:存储任意对象数据的容器。

    集合特点:
    1. 集合可以存储任意类型的对象数据。
    2. 集合长度是会发生变化的。

    集合体系:
    ---------| Collection 单列集合类的根接口
    ----------------| Set 如果实现了Set接口的集合类,该集合类具备特点:无序、元素不可重复
    ----------------| List 如果实现了List接口的集合类,该集合类具备的特点:有序、元素可重复

    Collection主要方法:

    增加
    boolean add(E e)
    boolean addAll(Collection c) 把一个集合的元素添加到另一个集合内
    删除
    void clear() 清空集合的所有元素
    boolean remove(Object o) 删除指定的元素
    boolean removeAll(Collection c) 删除两个集合中的交集元素
    boolean retainAll(Collection<?> c) 删除两个集合的其他元素,交集元素不删除
    判断
    boolean contains(Object o) 判断是否包含某个指定元素
    boolean containsAll(Collection<?> c) 集合是否包含参数集合中的所有元素
    迭代
    Iterator<E> iterator()获取集合中的迭代器,迭代器的作用就是用于抓取集合中的元素
    Object[] toArray()
    查看
    int size() 返回集合中的元素个数
    boolean isEmpty() 如果包含元素返回false 不包含元素返回true

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.Iterator;
    class Person{
        int id;
        String name;
    
        public Person(int id, String name) {
            this.id = id;
            this.name = name;
        }
        public String toString(){
            return "{ID:"+this.id+" name:"+this.name+"}";
        }
    
        @Override
        public boolean equals(Object obj) {
            if(obj instanceof Person){
                Person p = (Person)obj;
                return p.id ==this.id;
            }else{
                return false;
            }
        }
    
        @Override
        public int hashCode() {
            return this.id;
        }
    }
    
    public class Demo1 {
        public static void main(String args[]){
            // 创建一个集合对象
            Collection c = new ArrayList();
            int[] itme = {1,2,3};
            c.add("第一个元素");
            c.add(12);
            c.add(12.45);
            System.out.println("添加结果:"+c.add("马丹"));
            c.add(itme);
            // 创建集合的对象
            Collection c2 = new ArrayList();
            c2.add("郭富城");
            c2.add("刘德华");
            c2.add("张学友");
            c2.add("那谁");
            c2.add("马丹");
    
            c.addAll(c2);
            System.out.println(c.toString());
    
            System.out.println("删除指定元素结果:"+c.remove("第一个元素"));
            System.out.println(c);
    
            System.out.println("删除交集元素结果:"+c.removeAll(c2));
            System.out.println(c);
    
            System.out.println("删除并集元素结果:"+c.retainAll(c2));
            System.out.println(c);
    
            c.clear();
            System.out.println(c);
    
            Collection c1 = new ArrayList();
    //        c.add(new Person(110,"张三"));
            c1.add(new Person(112,"李四"));
            c1.add(new Person(119,"王五"));
            System.out.println("集合的元素:" + c1);
            System.out.println("是否包含王五"+c1.contains(new Person(119,"王五")));
    
            Collection c3 = new ArrayList();
            c3.add(new Person(110,"张三"));
            c3.add(new Person(112,"李四"));
            c3.add(new Person(119,"王五"));
            System.out.println("集合的元素:" + c3);
            System.out.println("是否包集合中的所有元素"+c.containsAll(c3));
    
    
    
    
            Collection c4 = new ArrayList();
            c4.add("孙悟空");
            c4.add("猪八戒");
            c4.add("沙僧");
            c4.add("白龙马");
            c4.add("唐僧");
            /**
             * 遍历方式一、使用toArray方式遍历
             *
             */
            Object[] items = c4.toArray();
            for (int i=0;i< items.length;i++){
                System.out.println(items[i]);
            }
            /**
             * 遍历方式二、使用iterator方式遍历
             * Iterator 是一个接口
             * 迭代器常用方法
             * hasNext()有无可遍历的元素
             * next() 下一个元素(获取当前游标指向元素,再把游标向下移动一个单位)
             * remove()
             */
            Iterator it = c4.iterator();
    //        System.out.println("是否有元素可遍历:"+it.hasNext());
    //        System.out.println("元素:"+it.next());
            while(it.hasNext()){
                System.out.println(it.next());
            }
        }
    }
    

    输出

    添加结果:true
    [第一个元素, 12, 12.45, 马丹, [I@2a84aee7, 郭富城, 刘德华, 张学友, 那谁, 马丹]
    删除指定元素结果:true
    [12, 12.45, 马丹, [I@2a84aee7, 郭富城, 刘德华, 张学友, 那谁, 马丹]
    删除交集元素结果:true
    [12, 12.45, [I@2a84aee7]
    删除并集元素结果:true
    []
    []
    集合的元素:[{ID:112 name:李四}, {ID:119 name:王五}]
    是否包含王五true
    集合的元素:[{ID:110 name:张三}, {ID:112 name:李四}, {ID:119 name:王五}]
    是否包集合中的所有元素false
    孙悟空
    猪八戒
    沙僧
    白龙马
    唐僧
    孙悟空
    猪八戒
    沙僧
    白龙马
    唐僧
    

    相关文章

      网友评论

          本文标题:集合

          本文链接:https://www.haomeiwen.com/subject/dsjpactx.html