• ArrayList、LinkedList、HashSet、HashMap、Iterator


    实线方块是实现类、  

    虚线方块是虚拟类、

    虚点方块是接口、

    实线箭头是实现,虚线箭头是继承

    一、ArrayList

    ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。

    ArrayList 继承了 AbstractList ,并实现了 List 接口

    import java.util.ArrayList;
    
    public class arraylist {
        public static void main(String[] args) {
            ArrayList<String> s=new ArrayList<>();
            s.add("q");
            s.add("9");
            s.add("8");
            System.out.println(s);
            System.out.println(s.get(0));
    
            s.set(1,"1");
            System.out.println(s);
    
            s.remove(0);
            System.out.println(s);
    
            System.out.println(s.size());
            for (int i =0;i<s.size();i++){
                System.out.println(s.get(i));
            }
    
            for (String i:s) {
                System.out.println(i);
    
            }
        }
    }

    、链表(LinkedList)
    链表可分为单向链表和双向链表。
    一个单向链表:数值、下一个节点的链接
    一个双向链表:数值、向后的节点链接、向前的节点链接

    与 ArrayList 相比,LinkedList 的 新增和删除 对操作效率更高,而查找和修改的操作效率较低。

    以下情况使用 ArrayList :
    1、频繁访问列表中的某一个元素。
    2、只需要在列表末尾进行添加和删除元素操作。

    以下情况使用 LinkedList :
    1、你需要通过循环迭代来访问列表中的某些元素。
    2、需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作

     三、HashSet

    HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
    HashSet 允许有 null 值。
    HashSet 是无序的,即不会记录插入的顺序。
    HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问

    import java.util.HashSet;
    
    public class hashset {
        public static void main(String[] args) {
            HashSet<String> sites = new HashSet<String>();
            sites.add("Google");
            sites.add("Runoob");
            sites.add("Taobao");
            sites.add("Zhihu");
            sites.add("Runoob");  // 重复的元素不会被添加
            System.out.println(sites);
            System.out.println(sites.size());       // 计算大小
            System.out.println(sites.contains("Taobao")); // 判断元素是否存在
    
            for (String s : sites) {
                System.out.println("===" + s);  // 因为是无序的,所以打印出来的顺序并不是添加的顺序
            }
    
            sites.remove("Taobao");  // 删除元素,删除成功返回 true,否则为 false
            System.out.println(sites);
    
            sites.clear();
            System.out.println(sites);
        }
    }

    四、HashMap

    HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
    HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
    HashMap 是无序的,即不会记录插入的顺序。
    HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。

    import java.util.HashMap;
    
    public class 集合hashmap {
        public static void main(String[] args) {
            HashMap<Integer, String> Sites = new HashMap<Integer, String>();
            // 添加键值对
            Sites.put(1, "Google");
            Sites.put(2, "Runoob");
            Sites.put(3, "Taobao");
            Sites.put(4, "Zhihu");
            System.out.println(Sites);
            System.out.println(Sites.get(3));
            Sites.remove(4);
            System.out.println(Sites.size()); // 元素数量
    
            for (int i: Sites.keySet()){
                System.out.println(i+ Sites.get(i));
            }
            for (String s:Sites.values()) {
                System.out.println(s);
            }
        }
    }

     五、Iterator

    import java.util.ArrayList;
    import java.util.LinkedList;
    
    import java.util.Iterator;
    
    public class 迭代器 {
        public static void main(String[] args) {
    
            // 创建集合
            LinkedList<String> sites = new LinkedList<String>();
            sites.add("Google");
            sites.add("Runoob");
            sites.add("Taobao");
            sites.add("Zhihu");
    
            // 获取迭代器
            Iterator<String> it = sites.iterator();
    
            // 输出集合中的所有元素
            while(it.hasNext()) {
                System.out.println(it.next());
            }
        }
    }
    测试进阶轨迹
  • 相关阅读:
    软件工程概论-用户登录界面
    2016.11.25异常处理
    2016.11.18多态
    2016.11.11继承与接口
    11.6数组
    10.28字符串加密等
    python 读写文件
    python可变的类型、不可变的类型
    python 字典练习 记录学生是否交作业的小程序
    python字典
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/14989856.html
Copyright © 2020-2023  润新知