Collection集合详解

什么是集合?

  • 集合是一个大小可变的容器。

  • 容器中的每个数据称为一个元素,数据==元素。

  • 集合的特点是:类型不确定,大小不固定。

一  Collection集合体系:

Collection集合详解

 上述实现类的特点

HashSet
添加的元素是无序,不重复,无索引
TreeSet
不重复,无索引,按照大小默认升序排序
LinkedHashSet
添加的元素是有序,不重复,无索引
ArrayList
添加的元素是有序,可重复,有索引
LinekdList
添加的元素是有序,可重复,有索引

二  Collection集合的常用API:

boolean add(E e)
把给定的对象添加到当前集合中
void clear()
清空集合中所有的元素
boolean remove(E e)
把给定的对象在当前集合中删除
boolean contains(Object obj)
判断当前集合中是否包含给定的对象
boolean isEmpty()
判断当前集合是否为空
int size()
返回集合中元素的个数
Object[] toArray()
把集合中的元素,存储到数组中

        实际使用API

public class CollectionDemo {
    public static void main(String[] args) {
        
        // 此处是多态的形式
        Collection<String> sets = new HashSet<>();
        // 1.添加元素,添加成功返回true.
        System.out.println(sets.add("贾乃亮")); // true
        // HashSet:添加的元素是无序,不重复,无索引。
        System.out.println(sets.add("贾乃亮")); // false
        System.out.println(sets.add("王宝强")); // true
        sets.add("陈羽凡");
        System.out.println(sets); // 集合重写了toString()方法,默认打印出内容信息
        // 2.清空集合的元素。
        sets.clear();
        //System.out.println(sets);

        // 3.判断集合是否为空 是空返回true 反之
        System.out.println(sets.isEmpty()); // false

        // 4.获取集合的大小
        System.out.println(sets.size()); // 3

        // 5.判断集合中是否包含某个元素 。
        System.out.println(sets.contains("贾乃亮"));

        // 6.删除某个元素:如果有多个重复元素默认删除前面的第一个!
        sets.remove("陈羽凡");
        System.out.println(sets);

        // 7.把集合转换成数组
        Object[] arrs = sets.toArray();
        System.out.println("数组:"+ Arrays.toString(arrs));

        String[] arrs1 = sets.toArray(String[]::new); // 以后再了解,指定转换的数组类型!
        System.out.println("数组:"+ Arrays.toString(arrs1));

        System.out.println("---------------------拓展---------------------------");
        Collection<String> c1 = new ArrayList<>();
        c1.add("李小璐");
        c1.add("马蓉");

        Collection<String> c2 = new ArrayList<>();
        c2.add("白百合");

        c1.addAll(c2); // 把c2集合的元素全部倒入到c1
        System.out.println(c1);
    }
}

三 Collection集合的遍历方式

首先解释一下 该处为什么没有最喜欢的for循环,因为Collection是没有索引的,所以不能使用for循环!!!

1  迭代器

public class CollectionDemo01 {
    public static void main(String[] args) {
        Collection<String> lists = new ArrayList<>();
        lists.add("赵敏");
        lists.add("小昭");
        lists.add("殷素素");
        lists.add("周芷若");
        System.out.println(lists);
        
        // 1.得到集合的迭代器对象。
        Iterator<String> it = lists.iterator();


        // 2.使用while循环遍历。
        while(it.hasNext()){
            String ele = it.next();
            System.out.println(ele);
        }

    }
}

2 foreach

foreach遍历的关键是记住格式:
   for(被遍历集合或者数组中元素的类型 变量名称 : 被遍历集合或者数组){

   }
public class CollectionDemo02 {
    public static void main(String[] args) {
        Collection<String> lists = new ArrayList<>();
        lists.add("赵敏");
        lists.add("小昭");
        lists.add("殷素素");
        lists.add("周芷若");
        System.out.println(lists);
        // lists = [赵敏, 小昭, 殷素素, 周芷若]
    
        for (String ele : lists) {
            System.out.println(ele);
        }

    }
}

3 Lambda表达式

public class CollectionDemo03 {
    public static void main(String[] args) {
        Collection<String> lists = new ArrayList<>();
        lists.add("赵敏");
        lists.add("小昭");
        lists.add("殷素素");
        lists.add("周芷若");
        System.out.println(lists);
        //   [赵敏, 小昭, 殷素素, 周芷若]
       
        lists.forEach(s -> {
            System.out.println(s);
        });
//      lists.forEach(s ->  System.out.println(s));
//      lists.forEach(System.out::println);


    }
}

 

上一篇:CF438E The Child and Binary Tree 题解


下一篇:Sets 、 Lists工具类的常用方式