Java基础_集合

概念:

一种工具类,是一个用来存放对象的容器;存放的是对象的引用;

与数组的区别:

集合数组
可以存放不同类型的;存放的是同一类型;
不固定长度;固定长度;
对象一定是引用类型;元素可以是基础类型,也可以是引用类型;

集合框架体系:

在这里插入图片描述

Collection和Collections的区别:

Collection: 是抽象的,无法实例化;是集合类的上级接口,子接口有 Set、List、LinkedList、ArrayList、Vector、Stack、Set;

Collections: 是集合类的一个帮助类, 它包含有各种有关集合操作的静态多态方法,用于实现对各种集合的搜索、排序、线程安全化等操作。此类不能实例化,就像一个工具类,服务于Java的Collection框架Comparable接口;例如:Comparator接口;迭代器——Iterator接口;提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作;Iterator对象称作迭代器,用以方便的实现对象容器内元素的遍历操作;

泛型:

参数声明部分包含一个或多个参数类型;操作的数据类型参数化;

代码路径:E:\IDEA_Study\Scattered_Study\Study\src\集合\GenericMethodTest.java

链接: https://www.w3cschool.cn/java/java-generics.html


ArrayList和LinkedList:

ArrayList: 底层是Array数组,数组扩容实现;
LinkedList: 底层是双向链表;

代码路径:E:\IDEA_Study\Scattered_Study\Study\src\集合\ListTest.java

ArrayList和Vector:

ArrayList非线程安全内存不足时默认扩展成1.5倍
Vector线程安全默认扩展成2倍

HashSet、LinkedHashSet和TreeSet:

HashSet: 是哈希表实现,不保证元素排序;不是同步的;集合元素可以为null,但只能有一个;HashSet调用HashCode()方法来得到hashCode值,根据hashCode值来决定hashCode中的位置;

LinkedHashSet: 同样根据hashCode()来决定元素的存储位置,同时使用链表维护元素的次序;

TreeSet: 是二叉树实现,数据自动排序;不允许null值;Set的子类SortedSet接口的唯一实现类;是使用树结构存储Set接口的实现;确保元素处于排序状态;支持自然排序和定制排序;自然排序使用CompareTo方法比较元素间的大小,按照升序排列;定制排序使用Comparator接口,实现Compare()方法;

HashMap、TreeMap、HashTable、ConcurrentHashMap:

HashMap非线程安全允许null作为key和value是HashTable的轻链接实现继承自AbstractMap类非sychronize的
TreeMap非线程安全不允许null作为key和value继承自AbstractMap类非sychronize的存入元素应当实现了Comparator接口或者Comparable接口;按照排序后的顺序迭代元素
Hashtable线程安全不允许null作为key和value继承自Dictionary类是sychronize的迭代过程中会锁定整个map
ConcurrentHashMap线程安全不允许null作为key和value继承自ReentrantLock类是sychronize的采用锁分段技术,将整个Hash桶进行了分段segment,插入元素时先找到插入哪一段segment,然后插入,需要提前获取segment锁; 引入分割,在迭代过程中仅锁定部分map;

List、Set、Map:

链接: https://www.cnblogs.com/IvesHe/p/6108933.html

堆和栈的区别:

在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配;
堆内存用来存放由new创建的对象和数组,在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理;
递归调用可以导致栈溢出;不断创建对象可以导致堆溢出;

链接: https://blog.csdn.net/u011546655/article/details/52170470

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值