首页 > Java开发 > java集合和数组的区别精要

java集合和数组的区别精要

java开发中集合和数组的区别?
*集合:
长度是可以变的
集合只能存储对象类型
集合可以存储多种引用数据类型的元素
*数组:
长度是固定的。
数组可以存储对象类型,也可以存储基本数据类型
数组存储的多个元素是同一种数据类型
Collection 接口
1,添加元素
添加单个元素:boolean add(Object obj);
添加多个元素:boolean addAll(Collection c);
2,判断元素
判断元素是否存在:boolean contains(Object obj);
判断一个集合的元素师否包含在当前集合中:boolean containAll(Collection c);
判断集合是否为空:boolean isEmpty();
3,删除元素
移除所有元素 :void clear();
移除单个元素:boolean remove(Object o);
移除多个元素:boolean removeAll(collection c)
4,获取元素
返回集合上的一个迭代器:Iterator iterator():
Iterator it = con.iterator();
while(it.hasNext()){
S.O.P it.next()
}
5,交集
交集:boolean retainAll(Collection c)
6,集合元素个数
元素个数:int size();
7,把集合转成数组
Object[] toArray();
*Set:元素有序(存入顺序和取出顺序一致),元素可以重复
*HashSet:底层数据结构是哈希表。
如何保证元素的唯一性呢?
它依赖两个方法:hashCode()和equals()
首先判断哈希值是否相同:
不同:就把元素添加到集合中。
相同:继续进入equals方法比较
返回true,说明元素重复,不存。
返回false,就把元素添加到集合
*TreeSet:底层数据结构是二叉树。
可以让集合中的元素排序。
如何保证元素的唯一性的呢?
它是根据比较返回的值是0,说明元素是重复的,就不添加。
有两种实现方案:
A:让自定义对象具备比较性
实现Comparable接口
B:让集合具备比较性
实现Comparator接口

如果两种情况都存在,以B为主

*List:元素无序,元素要求唯一
ListIterator lit = list.listIterator();//特殊方法
//迭代器容易出现并发修改异常 在使用迭代器元素的时候,不能使用集合区操作元素,否则,就会出现并发修改异常
*ArrayList//遍历4种 普通for 增强for Iterator ListIterator
//取出ArrayList中重复的元素(自定义对象)要重写 equals方法 例如:return this.age==s.age && this.name.equals(s.name);
底层数据结构式数组,查询快,增删慢。
线程不安全,效率高。
*Vector//3种普通for 增强for Enumeration
底层数据结构式数组,查询快,增删慢。
线程安全,效率低
*LinkedList
底层数据结构式链表,查询慢,增删快。
线程不安全,效率高
Map接口  : 存储的是键值对形式的元素
它的每一个元素,都是由键和值两个元素组成
键是不能有重复的,值是可以重复的
每一个键唯一指向一个值
1,添加功能
put(k key, V value)
2,判断功能
boolean containsKey(Object key)
boolean containsValue(Object value)
boolean isEmpty()
3,删除功能
void clear()
remove(Object key)
4,获取功能
Set<Map,Entry<k,v>> entrySet()
Set<k> keySet()
V get(Object key)
Collection<v> values()
5,长度
int size()
*两种遍历方式
1,A:先获取所有丈夫的集合,keySet
B: 遍历丈夫集合,获取到每一个丈夫,增强for
C:通过每个丈夫找到自己的妻子。get()
2,A:先获取结婚证的集合,entrySet()--Set集合的每一个元素师一个结婚证对象
B:遍历结婚证集合,获取到每一个结婚证,增强for
C:通过结婚证获取丈夫和妻子,getKey(),getValue()

*HashMap
底层数据结构是哈希表
如何保证键的唯一性呢
依赖hashCode()和equals()方法
线程不安全,效率高,允许null键和值
*Hashtable
底层数据结构是哈希表
如何保证键的唯一性呢
依赖hashCode()和equals()方法
线程安全,效率低,不允许null键和值
*TreeMap
底层数据结构是二叉树
如何保证键的唯一性呢
两种方式
自定义元素具备比较性
集合具备比较性
线程不安全,效率高,允许null值,不允许null键


本文固定链接: http://www.devba.com/index.php/archives/836.html | 开发吧

报歉!评论已关闭.