美文网首页
Java 集合

Java 集合

作者: 媛猿YY | 来源:发表于2021-04-22 19:50 被阅读0次

List 列表

  • List是元素有序并且可以重复的集合,称为序列
  • List可以精确控制每一个元素的插入位置,或删除某个位置的元素
  • List的两个主要实现类是ArrayList和LinkedList
  1. ArrayList
  • ArrayList底层是由数组实现的
  • 动态增长,以满足应用程序的需求
  • 在列表尾部插入或删除数据非常有效
  • 更适合查找和更新元素
  • ArrayList中的元素可以为null

HashSet

  • HashSet是set的一个重要实现类,称为哈希集
  • HashSet中的元素无序并不可以重复
  • HashSet中只允许一个null元素
  • 具有良好的存取和查找的性能
  1. 迭代器 Iterator
  • Iterator接口可以以统一的方式对各种元素集合进行遍历
  • hashNext方法检测集合中是否还有下一个元素
  • next()方法返回集合中的下一个元素
//        将英文单词添加到hashset中
       Set set = new HashSet();
       set.add("blue");
       set.add("red");
       set.add("black");
       set.add("yellow");
       set.add("white");
//        显示集合的内容
       System.out.println("集合中的元素为:");
//        将元素放在迭代器中
       Iterator it = set.iterator();
//        遍历迭代器并输出
       while (it.hasNext()) {
           System.out.print(it.next() + " ");
       }
//        定义宠物猫对象
        Cat huahua = new Cat("花花", 12, "英短");
        Cat fanfan = new Cat("凡凡", 3, "田园猫");
//        将宠物猫对象放入HashSet中
        Set<Cat> set = new HashSet<Cat>();
        set.add(huahua);
        set.add(fanfan);
//        显示宠物猫的消息
        Iterator<Cat> it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

//       再添加一个与花花属性一样的猫
        Cat huahua01 = new Cat("花花", 12, "英短");
        set.add(huahua01);
        System.out.println("============================");
        it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
//        重新插入一个新的宠物猫
        Cat huahua02 = new Cat("花花二代", 2, "英短");
        set.add(huahua02);
        System.out.println("添加花花二代后的宠物信息:");
        it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
//        在集合中查找花花的信息并输出
        if (set.contains(huahua)) {
            System.out.println("花花找到了");
            System.out.println(huahua);
        } else {
            System.out.println("花花没有找到");
        }

//        在集合中使用名字查找花花的信息
        System.out.println("============================");
        System.out.println("通过名字查找花花信息");
        boolean flag = false;
        Cat c = null;
        it = set.iterator();
        while (it.hasNext()) {
            c = it.next();
            if (c.getName().equals("花花")) {
                flag = true;//找到了
                break;
            }
        }
        if (flag) {
            System.out.println("花花找到了");
            System.out.println(c);
        } else {
            System.out.println("花花没找到");
        }

        /*
        删除花花二代的信息并重新输出
        * 1.集合内部有一把锁,在遍历集合时,是不能删除元素的
        * 2.删除思路:设置布尔类型变量flag,初始值false。定义Cat类型引用cat1,当存在“花花二代”时,falg变为true,cat1赋值为“花花二代”。循环结束后,根据flag的值,删除“花花二代”。
        * */
        boolean flag1 = false;
        Cat cat1 = null;
//        增强型for循环,将集合set中的数据取出依次放到cat中
        for (Cat cat : set) {
            if ("花花二代".equals(cat.getName())) {
                flag1 = true;
                cat1 = cat;
            }

        }
        if (flag1) {
            set.remove(cat1);
        }

        System.out.println("删除花花二代后的数据");
        for (Cat cat : set) {
            System.out.println(cat);
        }

        //删除集合中所有宠物猫的信息
        System.out.println("===============");
        boolean flag2 = set.removeAll(set);
//        方法一
//        if(flag2){
//            System.out.println("全部删除");
//        }else {
//            System.out.println("数据还有");
//        }
//         方法二
        if (set.isEmpty()) {
            System.out.println("全部删除");
        } else {
            System.out.println("数据还有");
        }

Map

  • Map中的数据是以键值对的形式存储的(key-value)
  • key-value以Entry类型的对象实例存在
  • 可以通过key快速地查找value
  • 一个映射不能包含重复的键
  • 每个键最多只能映射到一个值
HashMap
  • 基于哈希表的Map接口实现
  • 允许使用null值和null键
  • key值不允许重复
  • HashMap中的Entry对象是无序排列的
public static void main(String[] args) {
        Map<String, String> animal = new HashMap<String, String>();
        System.out.println("请输入三组单词对应的注释,并存放到hashmap");
        Scanner console = new Scanner(System.in);
//      添加数据
        int i = 0;
        while (i < 1) {
            System.out.println("请输入key值(单词):");
            String key = console.next();
            System.out.println("请输入value值(注释):");
            String value = console.next();
            animal.put(key, value);
            i++;
        }
//        打印输出value的值,使用迭代器
        System.out.println("===========================");
        System.out.println("使用迭代器输出所有的value");
        Iterator<String> it = animal.values().iterator();
        while (it.hasNext()) {
            System.out.print(it.next() + " ");
        }

//         打印输出key和value的值,使用迭代器
//        通过entrySet方法
        System.out.println("===========================");
        System.out.println("通过entrySet方法得到key-value");
        Set<Map.Entry<String, String>> entrySet = animal.entrySet();
        for (Map.Entry<String, String> entry : entrySet) {
            System.out.print(entry.getKey() + "-");
            System.out.println(entry.getValue());
        }
//        查找数据,通过单词找到注释并输出
//        使用keySet方法
        System.out.println("===========================");
        System.out.println("请输入要查找的单词:");
        String strSearch = console.next();
//        1.取到keySet
        Set<String> keySet = animal.keySet();
//        2.遍历keySet,每次从keySet中查找到一个元素放到key中
        for (String key : keySet) {
            if (strSearch.equals(key)) {
                System.out.println(("找到" + "键值对为:" + key + "-") + animal.get(key));
                break;//找到即终止
            }else {
                System.out.println("没有找到");
            }
        }
    }

相关文章

  • 一篇文章,全面解读Android面试知识点

    Java Java基础 Java集合框架 Java集合——ArrayList Java集合——LinkedList...

  • 收藏夹

    博文 Java 集合:Java 集合学习指南 Java 集合:Java 集合源码剖析 HashMap:HashMa...

  • Java 集合框架_开篇

    Java 集合框架系列 Java 集合框架_开篇Java 集合框架_ListJava 集合框架_ArrayList...

  • Java 集合框架_List

    Java 集合框架系列 Java 集合框架_开篇Java 集合框架_ListJava 集合框架_ArrayList...

  • 9、java集合

    1、什么是java集合 java集合是用来存储多个数据引用的数据类型。 2、java集合分类 java集合类在ja...

  • 【集合框架】

    集合框架(怎么实现、适用场景) hash相关 Java集合框架 Java集合框架综述Java集合框架面试问题集锦 ...

  • Java基础——集合体系Map详解

    Java基础——集合体系Map详解 上文中我们了解了集合体系中的单列集合:Java基础——集合以及Java集合——...

  • Java基础

    Java集合框架 一、Java集合类简介: Java集合大致分为四种体系:Set:无序、不可重复的集合List:有...

  • JavaSE集合类

    JavaSE集合类 概述 Java中集合类概述Java中数组与集合的比较Java中集合框架层次结构 Collect...

  • 集合系列(一):集合框架概述

    集合系列(一):集合框架概述 Java 集合是 Java API 用得最频繁的一类,掌握 Java 集合的原理以及...

网友评论

      本文标题:Java 集合

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