JAVA——容器

一张图看透容器关系

在这里插入图片描述

List简单常用用法

		
		/*
		ArrayList和LinkList 线程不安全效率高
		Vector线程安全效率低
		*/
		List list = new ArrayList();
        /*add添加的是object类型,这里1被自动装箱为Integer类*/
        list.add(1);
        list.add(1.2);
        list.add("hello");

        list.remove(1.2);
        /* 输出[1, hello] */
        System.out.println(list);

        List list2 = new ArrayList();
        list2.add("bbb");
        list2.add("ccc");
        list.add(list2);
        /*输出[1, hello, [bbb, ccc]] */
        System.out.println(list);
        /*get方法默认返回Obeject类,需要强转*/
        String s = (String) list.get(1);

HashMap

思路:
用Entry类包装key和value,底层采用数组+链表(链表里的节点是放Entry类)存储,首先将key值的hashCode进行hash映射,映射到数组对应下标的位置里,有两种情况:

  1. 数组对应位置为空null(即没有产生hash冲突),则在新建链表存在数组对应的位置里,链表的首节点为key。
  2. 数组对应位置不为空已有链表(即产生hash冲突),则在该链表末尾添加key。

所以,HashMap重写hashCode和equals以防止存入两个相同的key

hashCode():变量的地址,是Integer
注意:Java中规定两个内容相同的对象应该具有相等的hashCode

HashSet

底层实现利用map的key存储(value为Object),因为HashMap的key值不能重复,所以HashSet里的value不能重复

迭代器

		List list = new ArrayList();
        list.add("zhangsan");
        list.add("lisi");
        list.add("wangwu");
        for (Iterator iterator = list.iterator();iterator.hasNext();){
            System.out.println(iterator.next());
        }
/*
		源码:在AbstractList的内部类中
		
		//当前游标
		int cursor = 0;
		//当前游标的前面 每次利用迭代器执行remove后lastRet都会设为-1 此时再执行remove会出错
		int lastRet = -1;
		
		public boolean hasNext() {
		       return cursor != size();
		}

		public E next() {
            checkForComodification();
            try {
                int i = cursor;
                E next = get(i);
                lastRet = i;
                cursor = i + 1;
                return next;
            } catch (IndexOutOfBoundsException e) {
                checkForComodification();
                throw new NoSuchElementException();
            }
        }
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值