集合

2020-01-10  本文已影响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
孙悟空
猪八戒
沙僧
白龙马
唐僧
孙悟空
猪八戒
沙僧
白龙马
唐僧
上一篇 下一篇

猜你喜欢

热点阅读