栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java集合基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java集合基础

单例集合结构

Iterator接口

描述:用来遍历单例集合的。
常用方法:
E next():返回迭代的下一个元素。
boolean hasNext():如果仍然有元素,返回true。
简单使用:

public class a {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        list.add("123");
        list.add("456");
        list.add("789");
        //每个集合都有自己的迭代器
        Iterator iterator = list.iterator();
        //判断是否有迭代元素
        while (iterator.hasNext()){
            //取出迭代出的元素
            String s = iterator.next();
            System.out.println(s);
        }
    }
}

在while循环中操作集合元素,会出现并发修改异常。

List集合

特点:有序,元素可重复。
ArryList底层是一个Objects[],数组,在new的时候创建了一个长度为0的空Objects[],在第一次调用add的方法的时候,创建了一个一个长度为10的Objects[]数组。在扩容时是原有集合1.5倍。
int newCapacity = oldCapacity + (oldCapacity >> 1)

linkedList集合

底层的数据结构是双向链表。
元素增删快,查找慢,线程不安全,运行速度快。
在get元素时采用了一个简单的二分法,进行查找。

Set集合

set集合没有重复元素(hashcode方法和equals方法)。

HashSet集合

无序(hashcode%数组长度)。
底层是由一个HashMap(哈希表)实现,值被存储为map的键,在添加元素时,会创建一个对象作为HashMap的值。
桶的数量>8,数组元素>=64,时会变成红黑树。
在存储对象时,对象应该重写hashcode和equals方法(不重写调用object的equals,比较地址值),否则会存入相同内容的对象。

linkedHashSet

有序,不可重复。

单例集合遍历

1.iterator接口
2.增强for循环。

public class a {
    public static void main(String[] args) {
        ArrayList list = new ArrayList<>();
        list.add("abc");
        list.add("def");
        list.add("ghi");
        for (String s : list) {
            System.out.println(s);
        }
    }
}
红黑树


约束:
1.节点可以时红色或者黑色的。
2.根节点时黑色的。
3.叶子节点(空节点)是黑色的
4.每个红色节点的子节点都是黑色的。
5.任何一个节点到其每一个叶子节点的所有路径上的黑色节点数相同。
特点:查找速度快,趋近于平衡树。

哈希表

哈希表是数组加链表或者红黑树。
保证元素唯一:
对象所属的hashcode方法和equals方法。hashcode不同一定不相等,hashcode相同用equals方法比较(默认是地址值)。

HashSet构造方法

空参构造方法创建HashSet集合对象,把加载因子指定为0.75,底层的数组table为null。第一次添加元素,数组长度变为16。

集合底层数据结构

ArrayList:object[]数组
linkedList:双向链表
HashSet:哈希表(HashMap)
linkedHashSet:linkedHashMap
HashMap:数组+链表+红黑树
linkedHashMap:HashMap+linkedList

集合线程安全

线程安全:
vector(单例),HashTable(双列)
线程不安全:
单例:ArrayList,HashSet、TreeSet,linkedList。
双列:HashMap,TreeMap

Map集合的遍历
public class a {
    public static void main(String[] args) {
        Map map=new HashMap();
        map.put("张三1", "男");
        map.put("张三2", "男");
        map.put("张三3", "男");
        //加强for循环
        for (String s : map.keySet()) {
            System.out.println(map.get(s));
        }
        //遍历键或者值
        for (String s : map.keySet()) {
            System.out.println(s);
        }
        for (String value : map.values()) {
            System.out.println(value);
        }
        System.out.println("==============");
        //加强for遍历键和值
        for (Map.Entry entry : map.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号