java16

今天复习一下java中的集合框架
为什么会出现集合类?
因为面相对象的体现都是以对象的形式,所以为了对多个对象进行操作,就对对象进行存储,集合就是对象最常用的一种防方式
数组和集合类同是容器有何不同?
数组的长度是固定不变的,数组只能存储基本数据类型,而集合只能存储对象。
集合类的特点:集合类只能存储对象,长度可以改变,可以存储多种对象。
collect
----list :元素是有序的可以重复因为该集合体系有索引
–Arraylist 底层是数组结构,查询和修改速度快,而增删速度慢,线程不 同步
–LinkedList 底层是链表结构,查询和修改速度慢,增删速度快
–vector 底层是数组结构,线程同步,被ArrayList取代,Enumeration(枚举)是vector中的特有取出方式,和lterator一样,只是被lterator取代了
----set :元素是无序的元素不能重复
–HashSet:底层数据结构是哈希表
----TreeSet:元素可以进行排序
----Map:该集合存储键值对,一对一对往里面存,而且要保证键的唯一性。
----Hashtable:底层是哈希表数据结构,不可以存入null键null值,该集合线程同步。jdk1.0 效率低
-----HashMap:底层是哈希表数据结构,允许使用null值和null键,该集合是不同步的,jdk1.2 效率高
-----TreeMap:底层是二叉树结构,线程不同步,可以用于给map集合中键进行排序。
----collections :集合工具类该类所有方法都是静态的。
和set很像,其实set底层就是使用了map集合。添加元素,如果出现相同的键,那么后添加的值会覆盖原有键对应的值,并put方法会返回被覆盖的值
1.添加
put(K key,V value)
putAll(Map<? extends k,? extends V >m)
2.删除
clear()
remove(Object key)
3.判断
containsValue(Object value)
containsKey(Object key)
isEmpty()
4.获取
get(Object key)
size()
values()
hashset是如何保证元素唯一性的呢?
是通过元素的两个方法。hashcode和equals来完成
如果元素的hashcode值相同,才会判断equals是否为true
如果元素的hashcode值不同,不会调用equals
对于判断元素是否存在以及删除等操作,依赖的方法都是元素的hashcode和equals方法。
List特有方法:凡是能操作角标的方法都是该方法的特有方法
TreeSet是如何保证元素的唯一性的呢?
第一种方式让元素自身具备比较性,实现Compaerable接口,复写compareTo方法,这种方式也叫自然顺序。
第二种方式,当集合自身不具备比较性,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性,在集合初始化时就有了比较性,实现Comparator接口,复写其中的compare方法,定义了比较器将比较器对象作为参数传递给TreeSet集合的构造方法。
增 add(index,element) 在指定位置添加元素
addAll(index,collection)在指定位置将指定集合中的所有元素添加到该集合
删 remove(indexof) 将指定位置的元素删除
改 set(index,elements)
查 get(index)
subList(from.to)
listlterator()
List集合特有的迭代器。ListIterator是Iterator的子接口。
在迭代时,不可以通过集合对象的方法操作集合中的元素。
因为会发生concurrentModificationException异常
所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator只能对元素进行判断,取出,删除的操作。
如果想要其他的操作如添加,改正,就需要使用其子接口。ListIterator
该接口自能通过LIst集合的ListIterator方法获取

LinkedList:特有方法
sort(List list, Comparator<? super T> c) 将list集合中的元素进行排序,需要定义一个实现了comparator接口的比较器。
addFirst() 将指定元素添加到头
addLast() 将指定元素添加到尾
getLast() 取出尾部元素
getFirst() 取出头部元素
获取元素,但是元素被删除,如果集合中没有元素,会返回nosuchelementexception
removeFirst 删除头元素
removeLast。。。。
获取元素,但是元素被删除,如果集合中没有元素,会返回nosuchelementexception
在jdk1.6以后出现了替代方法
offerFirst() 添加元素
offLast()

peekFirst()
peekLast()
获取元素,但是元素被删除,如果集合中没有元素,会返回null
pollFirst()
pollLast()
获取元素,但是元素被删除,如果集合中没有元素,会返回null
map集合的两种取出方式:
1.keySet:将map中所有的键存入到set集合,因为set具备迭代器,所有可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值。
2.entrySet:
Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到set集合中,而这个关系的数据类型就是:Map.Entry
通过set的迭代器取到每一个map.entry数据类型,在通过map.entry类中特有的方法取得键和值。

jdk1.5版本的新特性:可变参数
其实就是一种数组参数的简写形式,不用每一次都手动的建立数组对象,只要将操作的元素作为参数传递即可,隐式将这些参数封装成了数组。

静态导入:当需要导入的类中的方法都是静态时可以用静态导入,避免的类名的重复。
import static java.util.Arrays.*;

猜你喜欢

转载自blog.csdn.net/qq_39127312/article/details/83627748