JAVA集合

集合和数组

集合和数组的区别

长度区别:

集合可变;
数字不可变。

内容区别:

集合只能是引用类型;
数组可以是基本类型,也可以是引用类型。
集合只能是引用类型:

1. 集合存储对象:Java集合中实际存放的只是对象的引用,每个集合元素都是一个引用变量,实际内容都放在堆内存或者方法区里面,但是基本数据类型是在栈内存上分配空间的,栈上的数据随时就会被收回的。
2. 基本类型数据如何解决呢:可以通过包装类把基本类型转为对象类型,存放引用就可以解决这个问题。更方便的,由于有了自动拆箱和装箱功能,基本数据类型和其对应对象(包装类)之间的转换变得很方便,想把基本数据类型存入集合中,直接存就可以了,系统会自动将其装箱成封装类,然后加入到集合当中。

集合的分类

Collection 接口

List 接口

1. LinkedList:接口实现类,链表,插入删除,没有同步, 线程不安全;
2. ArrayList:接口实现类,数组,随机访问,没有同步,线程不安全;
3. Vector:接口实现类 数组,同步,线程安全; Stack:是Vector类的实现类
特点:
1、ArrayList(基于动态数组实现的):底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素;
2、LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素;LinkedList类中有一个内部私有类Node,这个类就代表双端链表的节点Node。这个类有三个属性,分别是前驱节点,本节点的值,后继节点。
3、Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素;

Set 接口: 仅接收一次,不可重复,并做内部排序

1. HashSet:使用hash表(数组)存储元素 ;
LinkedHashSet:链表维护元素的插入次序
3. TreeSet:底层实现为二叉树,元素排好序。

特点:
1、HashSet(无序,唯一):底层数据结构是哈希表。依赖两个方法保证唯一性:hashCode()和equals();
2、LinkedHashSet(FIFO插入有序,唯一):底层数据结构是链表和哈希表;
由链表保证元素有序;由哈希表保证元素唯一。
3、TreeSet(唯一,有序):底层数据结构是二叉树。
如何保证元素排序的呢? 自然排序;比较器排序;
如何保证元素唯一性的呢? 根据比较的返回值是否是0来决定。

List和Set的区别

1. 有序性:List保证按插入顺序排序;set存储和取出的顺序不一致;
2. 唯一性:List是可重复性;set元素是唯一;
3. 获取元素:List可以通过索引直接操作元素;set不能根据索引获取元素。

Map 接口键值对的集合>

1. Hashtable:接口实现类,同步,线程安全;
2. HashMap:接口实现类,没有同步,线程不安全;
3. TreeMap:红黑树对所有的key进行排序

TreeSet, LinkedHashSet and HashSet 的区别:

1. TreeSet的主要功能用于排序;

  1. LinkedHashSet的主要功能用于保证FIFO即有序的集合(先进先出);
  2. HashSet只是通用的存储数据的集合

HashMap和HashTable的比较:

1. 线程安全:HashTable是同步的,它的部分方法加入了synchronized(心库耐兹得);HashMap是异步的即线程不安全。
3. 空值:HashTable是不允许存在空值;HashMap可以让一个空值作为key或者value,最多只有一个key为空,value可以多个空值。
4. 性能:HashTable性能最差;HashMap性能最好。
5. 用作key的对象必须实现hashCode和equals方法
6. 不能保证其中键值对的顺序
7. 尽量不要使用可变对象作为它们的key值

HashMap常用的方法

1. put(K key, V value):将键(key)/值(value)映射存放到Map集合中;
2. get(Object key):返回指定键所映射的值,没有该key对应的值则返回null;
3. size():返回Map集合中数据数量;
4. clear():清空Map集合;
5.isEmpty ():判断Map集合中是否有数据,如果没有则返回true,否则返回false;
5. remove(Object key):删除Map集合中键为key的数据并返回其所对应value值;
6. values():返回Map集合中所有value组成的以Collection数据类型格式数据;
7. keySet():返回Map集合中所有key组成的Set集合;
8. containsKey(Object key): 判断集合中是否包含指定键,包含返回true,否则返回false;
9. containsValue(Object value):判断集合中是否包含指定值,包含返回true,否则返回false。

TreeMap

实现了SortMap接口:基于红黑树对所有key进行排序


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值