关于集合类框架学习的补充

来源:互联网 发布:js截取字符串后几位 编辑:程序博客网 时间:2024/06/05 22:41
java .util.*定义了一系列的接口和类,告诉我们用什么类NEW出一个对象,可以进行超越数组的操作。
(注:JAVA1.5对JAVA1.4的最大改进就是增加了对范型的支持)

Set接口是数学中集合的概念:其元素无序,且不可重复。(正好与List对应)

!!注意数组和集合的区别:数组中只能存简单数据类型。Collection接口和Map接口只能存对象。

只有List可用get和size。而Set则不可用(因其无序)。

集合中每一个元素都有对象,如有字符串要经过强制类型转换。

Collections是工具类,所有方法均为有用方法,且方法为static。


Collections.Sort()分为两部分,一部分为排序规则;一部分为排序算法。
规则用来判断对象;算法是考虑如何排序。
对于自定义对象,Sort不知道规则,所以无法比较。这种情况下一定要定义排序规则。方式有两种:
java.lang下面有一个接口:Comparable(可比较的)
可以让自定义对象实现一个接口,这个接口只有一个方法comparableTo(Object o)
其规则是当前对象与o对象进行比较,其返回一个int值,系统根据此值来进行排序。
如 当前对象>o对象,则返回值>0;(可将返回值定义为1)
如 当前对象=o对象,则返回值=0;
如 当前对象<o对象,则返回值〈0。(可将返回值定义为-1)
看TestArraylist的java代码。
我们通过返回值1和-1位置的调换来实现升序和降序排列的转换。

java.util下有一个Comparator(比较器)
它拥有compare(),用来比较两个方法。
要生成比较器,则用Sort中Sort(List,List(Compate))
第二种方法更灵活,且在运行的时候不用编译。

注意:要想实现comparTo()就必须在主方法中写上implement comparable.


集合的最大缺点是无法进行类型判定(这个缺点在JAVA1.5中已经解决),这样就可能出现因为类型不同而出现类型错误。
解决的方法是添加类型的判断。

而在LinkedList的底层是一种双向循环链表。在此链表上每一个数据节点都由三部分组成:前指针(指向前面的节点的位置),数据,后指针(指向后面的节点的位置)。最后一个节点的后指针指向第一个节点的前指针,形成一个循环。

LinkedList经常用在增删操作较多而查询操作很少的情况下:队列和堆栈。
队列:先进先出的数据结构。
堆栈:后进先出的数据结构。
注意:使用堆栈的时候一定不能提供方法让不是最后一个元素的元素获得出栈的机会。
LinkedList提供以下方法:(ArrayList无此类方法)
addFirst();
removeFirst();
addLast();
removeLast();


Push用addFirst();pop用removeFirst(),实现后进先出。
用isEmpty()--其父类的方法,来判断栈是否为空。

在队列中,put为入队列操作,get为出队列操作。
Put用addFirst(),get用removeLast()实现队列。

List接口的实现类(Vector)(与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多。)
结论:在考虑并发的情况下用Vector(保证线程的安全)。
在不考虑并发的情况下用ArrayList(不能保证线程的安全)。

面试经验(知识点):
java.util.stack(stack即为堆栈)的父类为Vector。可是stack的父类是最不应该为Vector的。因为Vector的底层是数组,且Vector有get方法(意味着它可能访问到并不属于最后一个位置元素的其他元素,很不安全)。
对于堆栈和队列只能用push类和get类。
Stack类以后不要轻易使用。
!!!实现堆栈一定要用LinkedList。
 
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 店铺售假扣2分怎么办 淘宝店被扣24分怎么办 实体店铺查封后怎么办 淘宝店铺封订单怎么办 淘宝店铺被扣分怎么办 淘宝账户被保护怎么办 k宝登录不了怎么办 手机淘宝看不到图片怎么办 淘宝拿到货退款怎么办 商家收货未退款怎么办 卖家发了货退款怎么办 淘宝退款货到了怎么办 退货退款不退货怎么办 换手机了淘宝怎么办 换了手机号淘宝怎么办 支付宝不能收款怎么办 换号码了淘宝怎么办 支付宝付款码打不开怎么办 苹果付款信息打不开怎么办 地税密码忘记了怎么办 网上开店没订单怎么办 qq群人员上限怎么办 糖果y9桌面锁定怎么办 手机桌面乱了怎么办 网页内容不能复制怎么办 网页不能复制粘贴怎么办 闲鱼收到假货怎么办 微博账户锁定怎么办 闲鱼东西被下架怎么办 无锡梅村社保卡怎么办 无锡梅村医保卡怎么办 常州不要的旧家具怎么办 闲退款不退货怎么办 小白摄像机离线怎么办 oppo手机死机了怎么办 手机关机卡住了怎么办 手机死机无法关机怎么办 华为听筒音量小怎么办 小米手机自动接听电话怎么办 手机sd不兼容怎么办 安装包安装失败怎么办