Java集合框架List、Set、Map

1.List


list是一种有序集合,按照对象进入的顺序保存对象,并且允许重复对象,插入多个null值。

list查找效率快,但增删效率慢,增删会引起其他元素位置发生改变。

特点:有序,允许重复,查询快,增删慢

实现类有:

List 的实现类主要有 ArrayList、LinkedList

ArrayList底层通过数组实现,随着元素的增加而动态扩容。

ArrayList是Java集合框架中使用最多的一个类,是一个数组队列,线程不安全集合。

ArrayList集合的特点:

容量不固定,随着容量的增加而动态扩容(阈值基本不会达到)

有序集合(插入的顺序==输出的顺序)

插入的元素可以为null

增删改查效率更高(相对于LinkedList来说)

线程不安全

//        创建一个list的集合
        List<String> list=new ArrayList<>();
//        先集合中添加数据
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("a");
//        打印集合下标为1的数据
        System.out.println(list.get(1));
//        遍历集合
        for (String s : list) {
            System.out.print(s+" ");
        }


2.Set

set是无序的集合,不是按照对象进入的顺序保存,不可重复,只允许一个null值出现。

set检索元素效率低,而增删效率快,增删不会引起其他元素位置发生改变。

特点:无序,不允许重复,查询慢,增删快

遍历:foreach,迭代器

扩容: 初始容量16,负载因子0.75,扩容增量1倍

实现类有:

Set的实现类主要有HashSet 

HashSet
特点:
它存储唯一元素并允许空值,依据对象的hashcode来确定该元素是否存在

由HashMap支持

不保持插入顺序

非线程安全

性能参数:初始容量,负载因子,默认值: 初始容量16,负载因子0.75,示例:new HashSet<>(20, 0.5f);

//        创建一个set集合
        Set<String> set=new HashSet<>();
//        通过add向set中添加数据
        set.add("s");
        set.add("a");
        set.add("s");
//        打印set
        System.out.println(set);
//        创建迭代器
        Iterator<String> iterator = set.iterator();
//        通过hasNext查找数据
        while (iterator.hasNext()){
//            找到有数据 用s 来接受数据
            String s = iterator.next();
            System.out.println(s);
        }

3.Map

map以键值对的方式存储元素,根据键得到值,所有Map集合的Key是无序不可重复的,key和value都是引用数据类型,存的都是内存的地址。

特点:键值储存,key无序不可重复

实现类:

Map集合的实现类主要为HashMap。

HashMap是 Map 接口使用频率最高的实现类。
允许使用null键和null值,与HashSet一样,不保证映射的顺序。
所有的key构成的集合是Set:无序的、不可重复的。所以,key所在的类要重写:equals()和hashCode()
所有的value构成的集合是Collection:无序的、可以重复的。所以,value所在的类要重写:equals()
一个key-value构成一个entry
所有的entry构成的集合是Set:无序的、不可重复的
HashMap 判断两个 key 相等的标准是:两个 key 通过 equals() 方法返回 true,hashCode 值也相等。
HashMap 判断两个 value相等的标准是:两个 value 通过 equals() 方法返回 true。

//        创建一个map key为string类型 数据是object类型
        Map<String,Object> map=new HashMap<>();
//        添加数据 要通过key 添加数据
        map.put("name","王五");
        map.put("age",26);
        map.put("sex","男");
//        通过keyset获取所有的key并把他们保存在set集合
        Set<String> key = map.keySet();
//        创建迭代器
        Iterator<String>  n = key.iterator();
//        通过hasNext查找key
        while (n.hasNext()){
//            找到key用next来接收他
            String next = n.next();
//           map中获取数据需要key next 是我们获取到的key 所以我们使用get(key)来获取数据 然后这个数据用object类型接收
            Object o = map.get(next);
            System.out.println(o);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值