• 温故而知新,可以为师矣,学习到的东西不断回顾,往往能够发现自己的不足


    从上周开始我们学习了集合构架,下面我们开始回顾下:

    一.首先先来回顾ArrayList类:父类是List接口,在往上父类Collection集合

    public class Demo01 {
        public static void main(String[] args) {
            /**
             * list接口有序,可重复,有索引,可以用普通for循环
             */
            //新建arraylist类对象
            ArrayList<String> obj = new ArrayList<>();
            //添加数据
            obj.add("ruirui");
            obj.add("huahua");
            obj.add("dandan");
            obj.add("huahua");
            obj.add("yeye");
            obj.add("haohoa");
            //打印输出
            System.out.println(obj);
            //集合元素个个数
            System.out.println(obj.size());
            System.out.println("**************");
            //移除指定索引为2的集合元素
            obj.remove(2);
            System.out.println(obj);
            System.out.println("**************");
            //增强性for循环的用法
            for(String a:obj){
                System.out.println(a);
            }
            System.out.println("**************");
            //iterator迭代器的用法
            Iterator<String> it = obj.iterator();
            while(it.hasNext()){
                String s = it.next();
                System.out.println(s);
            }
            System.out.println("**************");
            //因为list是有索引的,所以我们可以用普通for循环遍历集合元素
            for(int i=0;i<obj.size();i++){
                String s = obj.get(i);
                System.out.println(s);
            }
            System.out.println("**************");
            //移除元素,但是如果有相同元素,它只会移除第一个
            obj.remove("huahua");
            System.out.println(obj);
            System.out.println("**************");
            //集合中是否包含yeye这个元素
            boolean ye = obj.contains("yeye");
            System.out.println(ye);
            System.out.println("**************");
            //集合是否为空
            boolean em = obj.isEmpty();
            System.out.println(em);
            System.out.println("**************");
            //清空集合元素
            obj.clear();
            //最后检测集合中是否还有元素个数
            System.out.println(obj.size());
    
    
    
        }
    }

    输出结果是:

    [ruirui, huahua, dandan, huahua, yeye, haohoa]
    6
    **************
    [ruirui, huahua, huahua, yeye, haohoa]
    **************
    ruirui
    huahua
    huahua
    yeye
    haohoa
    **************
    ruirui
    huahua
    huahua
    yeye
    haohoa
    **************
    ruirui
    huahua
    huahua
    yeye
    haohoa
    **************
    [ruirui, huahua, yeye, haohoa]
    **************
    true
    **************
    false
    **************
    0

    通过回顾,我们对ArrayList类的概念和方法的掌握是不是更上一层楼呢?

    总结:

    1,List接口是Collection集合的子类,ArrayList类是List接口的子类

    2,List接口是有序集合,允许重复的元素出现

    3,有索引,可以通过普通for循环遍历,也可以通过增强型for循环,还可以通过迭代器

    4,ArrayList类最大的特点需要我们注意:元素增删慢,查询快

    .LinkedList类

    我们首先来看一段代码:

    public class Demo02 {
        public static void main(String[] args) {
            //新建LinkedList类对象
            LinkedList<String> obj = new LinkedList<>();
            //添加数据元素
            obj.add("ruirui");
            obj.add("haohao");
            obj.add("juahua");
            //在第一个位置添加元素
            obj.addFirst("xioye");
            //在最后位置添加元素
            obj.addLast("halou");
            //返回第一个元素
            String f = obj.getFirst();
            System.out.println(f);
            //返回最后一个元素
            String l = obj.getLast();
            System.out.println(l);
            //移除元素
            obj.remove("haohao");
            System.out.println(obj);
            //打印输出元素个数
            System.out.println(obj.size());
    
    
        }
    }

    输出结果是:

    xioye
    halou
    [xioye, ruirui, juahua, halou]
    4

    总结:

    1,List接口是Collection集合的子类,LinkedListt类是List接口的子类

    2,List接口是有序集合,允许重复的元素出现

    3,有索引,可以通过普通for循环遍历,也可以通过增强型for循环,还可以通过迭代器

    4,LinkedList类最大的特点需要我们注意:增删快

    5,LinkedList除了包含ArrayList的方法之外,还提供了add,get,remove,set。首部(Fist)和尾部(Late)方法

    三.Set集合

    下面我们先看干货:

    public class Demo03 {
        public static void main(String[] args) {
            //新建HashSet类对象
            HashSet<String> obj = new HashSet<>();
            obj.add("ruirui");
            obj.add("huahua");
            obj.add("haohao");
            int size = obj.size();
            System.out.println(obj);
            obj.remove("ruirui");
            System.out.println(obj);
            boolean empty = obj.isEmpty();
            System.out.println(empty);
            boolean huahua = obj.contains("huahua");
            System.out.println(huahua);
            obj.clear();
            System.out.println(obj.size());
        }
    }

    输出结果:

    [haohao, huahua, ruirui]
    [haohao, huahua]
    false
    true
    0

    总结:

    1,set接口继承于Collection,它的子类是HashSet,HashSet的子类是LinkedHashSet

    2,set接口的特点是无序,不允许重复元素存在,没有索引,只能通过iterator迭代器和增强型for循环遍历

    3,但是LinkedHashSet是有序的

    4,HashSet类底层是一个哈希表,所以查询快,是Set接口的实现类

  • 相关阅读:
    flask-离线脚本、with在上下文的应用
    websocket原理及实时投票
    微信消息的推送
    Django + Uwsgi + Nginx 的生产环境部署2
    UVA 11853 Paintball
    UVA 12171 Sculpture
    UVA 10305 Ordering Tasks
    UVA 816 Abbott's Revenge
    UVA 699 The Falling Leaves
    UVA 12657 Boxes in a Line
  • 原文地址:https://www.cnblogs.com/liurui-bk517/p/10904929.html
Copyright © 2020-2023  润新知