java集合框架

Java中的集合框架
Collection接口,该接口定义了集合的相关特性。该接口派生了两个子接口:
1-List:可重复集(同一个元素可以放入若干次)。这里所谓的同一个元素指的是equals为true,有序集。
2-Set:不可重复集合,无序集。

Collection定义的常用方法:
int size(): 返回集合中的元素数量
boolean isEmpty(): 判断集合是否是空集合,即判断集合里面是否有元素。
list.isEmpty(true)等同于list.size()==0
boolean contains(Object o): 判断集合是否包含指定的元素。
void clear():清空集合
boolean add(E e):向集合中添加元素
boolean remove(E e):从集合中删除指定元素
Collection不太常用的方法:
boolean addAll(Collection c):将指定集合中的所有元素添加到当前集合(并集)。
boolean removeAll(Collection c):删除当前集合中与给定集合相同的元素。
Iterator
iterator():返回遍历数组的迭代器

List集合的实现类:
ArrayList:内部使用数组实现的集合。
LinkedList:使用链表方式实现的集合。
List接口中定义的方法
get(int index):获取指定位置的元素。
set(int index,Object obj):将指定位置上的元素替换为指定元素,返回被替换的元素。
add(int
index,Object o):在指定位置插入给定的元素,原来的元素顺序后移
remove(int index):删除制定位置的元素。
indexOf(Object o):查找给定元素在集合中第一次出现的位置,没有找到则返回值为-1.
lastIndexOf(Object
o):查找给定元素 在集合中最后一次出现的位置。
Collection
toArray():将集合转换为指定类型的数组。

LinkedList与ArrayList比较:
ArrayList使用数组方式实现,根据数组的实现原理,这种集合更适合查询数据,但是对于频繁的增删元素而言,效率要低。
LinkedList使用链表方式实现,根据链表的实现原理,这种集合更适合增删元素,但是对于频繁的查询元素相对效率要低。

迭代器
:用于遍历集合。 调用集合定义的方法iterator()
Iterator接口:定义了遍历集合时的相关方法不同的集合有着不同的迭代器实现,我们无需记住每一种具体的迭代器,也不需要关心。我们应该关心的是如何使用迭代器去遍历集合。
该接口有三个常用的方法

boolean hasNext();是否还有元素可以获取
Object next();获取元素
void remove();删除当前迭代出的元素

遍历集合需要遵循: !!!问取删!!! 删除可以不做。

泛型
java1.5之后的另一个新特性!
泛型的本质就是参数化类型。在使用某个类时为方法,属性等指定类型。
泛型不能参与运算!!!集合中的泛型通常是约束集合中存放元素的类型

增强for循环
新循环 1.5以后出现的
新循环的作用是简化了便利集合和数组的操作,换言之新循环就是为了便利集合和数组使用的
for(ELEMENT_TYPE
e : LIST_ARRAY){}
List集合的subList方法,获取当前集合的子集
List subList(int start,int end)

Comparable接口在对数组或集合元素进行排序时,首先要确定比较大小,有了结论才可以进行排序,
而如何比较大小,则需要实现该接口,并实现其中的抽象方法来定义比较规则.
Arrays在对数组进行排序时,比较每个元素大小时就会调用这些元素的compareTo方法进行比较,
而这个方法就是Comparable接口定义的.

排序集合:Collections集合的工具类,其中有一个方法是sort,用于排序集合java中的很多类都实现了Comparable接口.
例如:String,Integer等像字符串这样JDK提供的类,他们自身已经定义了比较规则,但是当比较规则不能满足我们对排序的要求时,我们则需要另外指定比较规则。例如:按照字符串中字符的多少进行比较.Collections提供了一个重载的排序方法:sort(Collection
c,Comparator com)
Comparator接口
比较器,用来定义比较规则.当调用Collections的sort(Collections
c,Comparator com)方法时,该方法在排序集合时,不使用集合中元素自身的比较规则,而是使用我们提供的比较器中的比较规则进行比较后再进行排序的.

注:Comparable和Comparator的区别。
在JDK中,Comparable接口用于比较对象间的大小关系,Java类可以通过实现Comparable接口
实现对象之间的大小逻辑,一旦Java类实现了Comparable,其比较逻辑就已经确定;
若是想要在排序的操作中临时定制比较规则,可以使用Comparator接口回调的方式实现。

Set集合
不重复集,在set集合中不存在两个元素equals为true的Set集合的常用实现类
HashSet:使用散列算法实现的Set,
TreeSet:使用二叉树实现的Set
HashSet存取元素需要依靠元素的hashcode()方法的返回值。hashcode()方法是Object定义的方法
public
int hashCode()重写该方法时要注意:
1:应与equals方法的一致:当两个对象equals方法比较为true时,hashCode()方法返回的数字应该相同.
2:不同的对象hashCode()值应尽量避免相同。

数据结构
Map
Map接口定义的集合包含两部分,key-value
以键值对的形式保存元素,可以把map看作是一个多行两列的表格。根据内部实现不同,我们常使用HashMap,也有通过二叉树实现的TreeMap.
在Map中,key是不重复的.存取数据的方法V
put(K k,V v):根据给定的key存放给定的 value.

若使用已存在的key存放元素,那么就是替换value操作,返回值则是被替换的元素.否则返回null.
V
get(Object k):根据给定的key获取对应的value,若key在map中不存在,则返回null
boolean
containsKey(Object k)查看当前map中是否有给定的key
boolean
containsValue(Object v)查看当前map中是否有给定的value

HashMap的性能:
Capacity
容量:HashMap中散列数组的大小.initial capacity 初始容量:创建HashMap时,默认创建的散列数组的大小,这个默认值为16.
size
大小:HashMap中存放的数据量
loadfactor
加载因子:加载因子的默认值为0.75, 该值是通过size/capacity得到的比值.当存储的数据量超过了比值0.75时,会对散列数组进行扩容,并对hashmap中原来的所有元素重新计算并存入新数组.遍历map

遍历map有三种方式获取所有的key;获取所有的value:
不太常用;获取所有的key-value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值