zoukankan      html  css  js  c++  java
  • 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());
            }
        }
    }
    测试进阶轨迹
  • 相关阅读:
    js网页滚动条滚动事件实例分析
    一个简单的登陆注册的页面
    几个例子弄懂JS 的setInterval的运行方式
    IIS线程池与ASP.NET线程池
    [翻译]了解ASP.NET底层架构(八)
    IIS提示Server Application Unavailable
    C/C++, Java和C#的编译过程解析
    C#学习系列-.NET体系结构
    C#技术漫谈之垃圾回收机制(GC)
    ASP.NET应用程序与页面生命周期
  • 原文地址:https://www.cnblogs.com/yinwenbin/p/14989856.html
Copyright © 2011-2022 走看看