Java集合总结

作者:杨裙
本次任务完成时间:2019年6月3日
开发工具与关键技术:MyEclipse 10、Java
1、Java的集合类主要由两个接口派生而出:Collection和Map, Collection和Map是Java 集合框架的根接口,这两个接口又包含了一些子接口或实现类。
2、Collection接口下又有两个子接口,List和Set子接口。
一、List集合
1、其中List接口下有几个实现类:ArrayList、LinkedList、Vector。Vector:内部是数组数据结构,是同步的。增删,查询都很慢。LinkedList:内部是数组数据结构,是不同步的,替代了Vector,查询的速度快。LinkedList:内部是链表数据结构,是不同步的,增删元素的速度很快。我们一般会使用LinkedList实现类,但是要注意的是List集合中的类型如果是基本数据类型就要使用其包装类,不能使用基本数据类型,如下图:
在这里插入图片描述
2、List集合代表一个元素是有序、可重复的集合,集合中每个元素都有其对应的顺序索引,List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List集合默认按元素添加顺序设置元素的索引。
3、因为List集合的元素是有顺序的,所以它是可以使用Comparable和Comparator两个排序接口的任意一个进行排序。
4、如果List元素是通过迭代的方式来取出元素的,那么如果在迭代的过程中,想要进行对元素操作,那么这时候会出现错误。因为 Iterator中只有hasNext,next,remove方法,没有其它方法,所以如果想要对元素进行操作就要使用其子接口ListIterator,因为其接口中可以对元素进行增、删、改、查的动作。而且,ListIterator是List集合中特有的迭代器。
在这里插入图片描述
二、Set集合
1、Set集合存在的特点是元素不可以重复,而且是没有顺序的。当添加元素的时候,它不会按照添加的顺序来,因为其记不住顺序。而且Set集合不允许添加的元素是相同,它会添加操作失败。
2、Set集合下有HashSet和SortedSet两个实现类,其中SortedSet中又有TreeSet实现类。
3、HashSet类是Set接口典型的实现类,HashSet不能保证元素的排列顺序,顺序可能与添加的顺序不同,HashSet不是同步的(不是线程安全的),如果多个线程同时访问一个 HashSet,假设有两个或者两个以上线程同时修改了 HashSet集合时,则必须通过代码来保证其同步。
4、HashSet是通过hashcode和equals来判断对象,是否是唯一的,如果判断hashcode的值不相同,那么就不用equals方法判断值是否相等。如果hashcode值相同,那么就会去执行equals方法。
5、LinkedHashSet类也是根据hashcode值来决定元素的存储位置,但它同时使用链表维护元素的次序,这样使得元素看起来是以插入的顺序保存的。LinkedHashSet需要维护元素的插入顺序,因此性能略低于 HashSet的性能,但在迭代访问Set里的全部元素时将有很好的性能,因为它以链表来维护内部顺序。
6、TreeSet类是SortedSet接口的实现类,但TreeSet是有顺序的,不同步的,可以使用Comparable和Comparator接口进行排序。TreeSet 方法保证元素唯一性的方式: 就是参考比较方法的结果是否为 0,如果 return 0 ,视为两个对象重复,不存。
7、Set接口中的方法和Collection中的方法一致。Set接口取出方式只有一种,迭代器,如下图:
在这里插入图片描述
三、 Queue队列
1、一个队列就是先进先出的数据结构,Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。
2、Queue的几个方法:add、element、offer、peek、poll、remove,下面是这几个方法的运用,如下图:
在这里插入图片描述 四、Map集合
1、Map集合下有HashMap和~SortedMap实现类,其中HashMap下有LikedHashMap,
~SortedMap下又有TreeMap。
2、map集合中必须保证键的唯一性 ,这是map集合的特点。
3、Map集合是以键-值对的形式存在,键与值之间有对应(映射)关系 。其是一次添加一对元素(key-value)。而Collection是一次添加一个元素。
如下图例:
在这里插入图片描述
4、HashMap:内部结构是哈希表,不是同步的,允许null作为键,null作为值。
5、TreeMap:与HashMap类似,内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。由于TreeMap是有序的,也支持Comparable和Comparator两种排序方式。TreeMap主要是key值排序。
6、在声明集合时,如果是基本数据类型,那么声明的map的时候使用包装类。
7、map中是没有迭代器的,但collection具备迭代器,只要将map集合转成set集合,就可以使用迭代器了。之所以转成set,是因为map集合具备键的唯一性,其实set集合就来自map,set底层其实用的就是map方法。
8、把map集合转成set的方法,Set --keyset()方法

如图例:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值