集合进阶(一)——Collection

集合进阶

集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用

集合体系结构

集合主要分为两类,一个是单列集合(Collection),一个是双列集合(Map)

- Collection代表单列集合,每个元素(数据)只包含一个值
-Ensp;Map代表双列集合,每个元素包含两个值(键值对)

在这里插入图片描述
Collection集合特点

List系列集合: 添加的元素是有序、可重复、有索引的

  ArrayList、LinkedList:有序、可重复、有索引


Set系列集合: 添加的元素是无序、不重复、无索引的

  HashSet:无序、不重复、无索引

  LinkedHashSet:有序、不重复、无索引

  TreeSet:按照大小默认升序排序、不重复、无索引

public class CollectionTest1 {
    public static void main(String[] args) {
        //有序、可重复、有索引
        ArrayList<String> list = new ArrayList<>();
        list.add("java");
        list.add("java");
        list.add("java2");
        list.add("java3");
        //[java, java, java2, java3]
        System.out.println(list);
        System.out.println(list.get(0));


        System.out.println("----------------");
        //无序、不重复、无索引
        HashSet<String> set = new HashSet<>();
        set.add("java1");
        set.add("java1");
        set.add("java2");
        set.add("java2");
        set.add("java3");
        //[java3, java2, java1]
        System.out.println(set);


        System.out.println("----------------");
        //有序、不重复、无索引
        LinkedHashSet<String> link = new LinkedHashSet<>();
        link.add("java3");
        link.add("java3");
        link.add("java1");
        link.add("java2");
        link.add("java1");
        //[java3, java1, java2]
        System.out.println(link);

        System.out.println("------------------");
        //按照大小默认升序排序、不重复、无索引
        TreeSet<String> TSet = new TreeSet<>();
        TSet.add("python");
        TSet.add("python");
        TSet.add("python1");
        TSet.add("python3");
        TSet.add("python2");
        TSet.add("python4");
        //[python, python1, python2, python3, python4]
        System.out.println(TSet);
    }
}

Collection常用方法

方法名说明
public boolean add(E e)添加元素,添加成功返回true
public void clear()清空集合的元素
public boolean isEmpty()判断集合是否为空,为空则返回true,否则返回false
public int size()获取集合的大小
public boolean contains(Object obj)判断集合中是否包含某个元素
publi boolean remove(E e)删除某个元素:如果有多个重复元素则默认删除前面的第一个
public Object[] toArray()把集合转换成数组

案例演示

public class CollectionTest2 {
    public static void main(String[] args) {
        //多态
        Collection<String> clt = new ArrayList<>();
        //public boolean add(E e):添加元素,添加成功返回true
        clt.add("Message");
        clt.add("Message3");
        clt.add("Message3");
        clt.add("Message1");
        clt.add("Message2");
        //[Message, Message3, Message3, Message1, Message2]
        System.out.println(clt);

        //public void clear():清空集合的元素
//        clt.clear();
        //[]
//        System.out.println(clt);

        //public boolean isEmpty():判断集合是否为空,为空返回true,否则返回false
        //false
        System.out.println(clt.isEmpty());

        //public int size():获取集合的大小
        //5
        System.out.println(clt.size());

        //public boolean contains(Object obj):判断集合中是否包含某元素
        //true
        System.out.println(clt.contains("Message1"));

        //public boolean remove(E e):删除某个元素,如果有多个重复元素则默认删除前面的第一个
        clt.remove("Message3");
        //[Message, Message3, Message1, Message2]
        System.out.println(clt);

        //public Object[] toArray():把集合转换成数组
        //返回类型是Object
        Object[] obj = clt.toArray();
        //[Message, Message3, Message1, Message2]
        System.out.println(Arrays.toString(obj));


    }
}

迭代器

迭代器是用来遍历集合的专用方式(数组没有迭代器),在Java中迭代器的代表是Iterator

Collection集合获取迭代器的方法

方法名说明
Iterator<E> iterator()返回集合中的迭代器对象,该迭代器对象默认指向当前集合的第一个元素

Iterator迭代器中的常用方法

方法名称说明
boolean hasNext()询问当前位置是否有元素存在,存在返回true,不存在返回false
E next()获取当前位置的元素,并同时将迭代器对象指向下一个元素处

案例演示

public class CollectionTest3 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("贾宝玉");
        c.add("林黛玉");
        c.add("薛宝钗");
        c.add("王熙凤");
        //[贾宝玉, 林黛玉, 薛宝钗, 王熙凤]
        System.out.println(c);

        Iterator<String> it = c.iterator();
        
        while (it.hasNext()) {
            String str = it.next();
            System.out.println(str);
        }
    }
}

增强for循环

for (元素数据类型 变量名 : 数组或集合) {

}

- 增强for循环可以用来遍历集合或数组

- 增强for循环遍历集合,本质上就是迭代器遍历集合的简化血法

增强for循环演示

public class CollectionTest3 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("贾宝玉");
        c.add("林黛玉");
        c.add("薛宝钗");
        c.add("王熙凤");
        //[贾宝玉, 林黛玉, 薛宝钗, 王熙凤]
        System.out.println(c);

        Iterator<String> it = c.iterator();
        
        for (String str : c) {
        	System.out.println(str);
        }
    }
}

Lambda表达式遍历集合

得益于JDK8开始的新技术Lambda表达式,提供了一种更简单、更直接的方式来遍历集合

需要使用Collection的如下方法来完成

方法名说明
default void forEach(Consumer<? super T> action)结合Lambda遍历集合)

案例演示

public class CollectionTest3 {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        c.add("贾宝玉");
        c.add("林黛玉");
        c.add("薛宝钗");
        c.add("王熙凤");
        //[贾宝玉, 林黛玉, 薛宝钗, 王熙凤]
        System.out.println(c);

        Iterator<String> it = c.iterator();

        c.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        System.out.println("---------------");
        c.forEach((String s) -> System.out.println(s));
        System.out.println("---------------");
        c.forEach(s -> System.out.println(s));
        System.out.println("---------------");
        c.forEach(System.out::println);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

离歌慢饮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值