java集合基础

单例集合结构

在这里插入图片描述

Iterator接口

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

public class a {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("123");
        list.add("456");
        list.add("789");
        //每个集合都有自己的迭代器
        Iterator<String> 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<String> 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<String, String> map=new HashMap<String, String>();
        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<String, String> entry : map.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java集合Java编程中非常重要的一部分,它提供了一种方便的方式来处理一组对象Java集合框架包括List、Set、Map等接口和实现它们的类。下面是Java集合基础知识的介绍: 1. List接口:List是一个有序的集合,它可以包含重复的元素。List接口的常用实现类有ArrayList和LinkedList。其中,ArrayList是一个动态数组,它可以自动扩容以容纳更多的元素;而LinkedList是一个双向链表,它可以快速地在列表中插入或删除元素。 2. Set接口:Set是一个不允许重复元素的集合。Set接口的常用实现类有HashSet和TreeSet。其中,HashSet是一个基于哈希表的实现,它可以快速地查找元素;而TreeSet是一个基于红黑树的实现,它可以对元素进行排序。 3. Map接口:Map是一个键值对的集合,它允许使用键来查找值。Map接口的常用实现类有HashMap和TreeMap。其中,HashMap是一个基于哈希表的实现,它可以快速地查找键值对;而TreeMap是一个基于红黑树的实现,它可以对键进行排序。 下面是一个示例代码,演示了如何使用ArrayList集合存储学生的成绩,并遍历这个集合: ```java // 创建一个ArrayList集合,向这个集合中存入学生的成绩 ArrayList<Integer> al = new ArrayList<Integer>(); al.add(78); al.add(67); // 对集合遍历 // 方式1 for (Object obj : al) { System.out.println(obj);} // 方式2 for (Integer i : al) { System.out.println(i); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值