技术blog09 by 八戒

来源:互联网 发布:磁卡读写器怎么写数据 编辑:程序博客网 时间:2024/04/30 05:10

集合

集合是指一个对象容纳了多个对象,这个集合对象主要用来管理维护一系列相似的对象
数组就是一种对象
java.util.*定义了一系列的接口和类,告诉我用什么类new出一个对象,可以进行超越数组的操作
集合框架接口的分类(分collection接口和map接口)
Collection接口:集合中每一个元素为一个元素,这个接口将这些对象组织起来,形成一维结构
List接口:代表按照元素一定的相关顺序来组织,list接口中数据可重复
Set接口:是数学中集合的概念,其元素无序,且不可重复(正好与list对应)
Map接口中每一个元素不是一个对象,而是一个键对象和值对象组成的键值对
Key-value是用一个不可重复的key几个对应可重复的value集合
例子:
key1-value1
key2-value2
key3-value3
注意! 数组和集合的区别:数组中只能存简单数据类型。Collection接口和Map接口只能存对象
以下介绍接口:
List接口:(介绍其下的两个实现类,arrayList和LinkedList)
ArrayList和数组非常类似,其底层也用数组组织数据,ArrayList是动态可变数组
1.底层:指储存格式。说明ArrayList对象都是存在于数组中
注:数组和集合都是从下标0开始的
ArrayList有一个add(object o)方法用于插入数组
ArrayList的使用:
先import java.util.*;
用ArrayList在一个数组中添加数据,并遍历
ArrayList中数组的顺序与添加顺序一致
只有List可用get和size 而Set则不可用
Collection接口都是用过Iterator()(迭代器)来对Set和List遍历
通过语句:Iterator it = c.iterator()得到一个迭代器,将集合中所有元素顺序排列,然后可以通过iterator方法进行遍历,迭代器
有一个游标(指针)指向首位置。
Iterator有hasNext(),用于判断元素右边是否还有数据,返回True说明有,然后可以调用next动作。Next()会将游标移到
下一个元素,并把它所跨过得元素返回。


LinkedList接口(在代码的使用过程中和ArrayList没有什么区别)
ArrayList底层是object数组,所有ArrayList具有数组的查询速度快的优点以及增删速度慢的缺点
而在ArrayLIst的底层是一种双向循环链表,在此链表上每一个数据节点都是由三部分组成:前指针(指向前面的节点的位置)
,数据,后指针(指向后面的节点的位置),最后一个节点的后指针指向第一个节点的前指针,形成一个循环
双向循环链表的查询效率低但是增删效率高,所以LinkedList具有查询效率低但增删效率高的特点
ArrayLIst和LinkedList在用法上没有区别,但是在功能上还是有区别的
LinkedList经常用在增删操作较多而查询操作很少的情况下,队列和堆栈
队列:先进先出的数据结构
堆栈:后进先出的数据结构
注意:使用堆栈的时候一定不能提供方法让不是最后一个元素的元素获得出栈的机会
LinkedList提供一下方法(ArrayLIst无此类方法)
addFirst()
removeFirst()
addLast()
removeLast()
在堆栈中,push()为入栈操作,pop为出栈操作
Push用addFirst(),pop用removeFirst(),实现后进先出
用isEmpty() 其父类的方法,来判断栈是否为空


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


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











0 0
原创粉丝点击