JAVA的集合※
※List集合:
定义:可用于存储数量不等的对象,并且可以实现常用的数据结构,如:栈、队列等;JAVA集合还可用于保存具有映射关系的关联数组(Map);Java集合大致分为:※【List】、【Set】、【队列:Queue】和【Map】四种体系,【List】代表着有序重复的一个集合,【Set】代表着无序不重复的集合;而【Map】代表着是有映射关系的集合---》【键值对】。
- JAVA集合概述:保存是【数量不确定】的数据,以及保存有【映射关系的数据】---》(关联数组);主要提供的是数据的盛放,也称为容器类(数据的容器类),都位于【java.util】包下面。
- 集合和数组的不同,数组元素既可以是【基本类型的值】,也可以是【对象】(实际上保存的是对象的引用变量);而集合只能够保存【对象】(实际上保存的是对象的引用变量)。
- JAVA的集合主要是有两大结构(接口派生而出):【Collection】和【Map】是JAVA集合框架的【根接口】,这两个接口又包含了一些【子接口】或【实现类】。
JAVA集合视图:
- 【List】集合代表着【有序】、【可重复】的集合,集合中每个元素都有其对应的【顺序索引】,允许使用重复元素,可以通过【索引】来访问指定位置的【集合元素】;默然按元素的添加顺序来设置元素的索引。
- 【Vector】是线程安全的,【AarrList】是非线程安全的。
- ※常用【AarrList】非线程安全;※【HashMap】;
- 集合的声明:声明【List】的时候,一般用的是它的【向上转型】。
- 【List】如果要存放整型的数据类型请输入相对应的【包装类类型】。
※List的常用方法
- add()--->向尾部添加指定的元素
- add()-->在列表中的指定位置插入指定的元素
- addAll()-->把一个集合插入到另外的一个集合
※注意事项:指定的index不能大于List元素的个数
- clear()清空集合--》
- Contains()判断是否包含指定的元素,返回的是bool值
- ContianisAll() 是否包含一段集合,也就是大的集合里面是否包含有小的集合元素
- equals()判断指定的对象或者列表是否相等
- get(index) 获取指定位置的元素--》index<集合的大小
- indexOf()返回某一个元素的索引位置----》第一次出现的索引位置
- lastIndexOf()返回某一个元素的索引位置--->最后一次出现的索引位置
- isEmpty() 队列是否为null -》
- remove()移除列表中指定位置的元素
- removeAll()移除指定包含在列表中的元素
- retainAll()移除指定不包含在列表中的所有元素
- set()替换指定位置的元素相当于修改-->
- size()返回列表中元素的个数
- subList(fromIndex,toIndex)从哪到哪,左并右开区间---》[fromIndex,toIndex)
- toArray()集合转成数组--->
四:Comparable和Comparator
- Comparable:是排序接口,若一个类实现了Comparable接口,那也就意味着这个类支持排序;实现了Comparable接口的【类】/【对象】/【列表】/【数组】都可以通过【Collections.sort】/【Arrays.sort】进行自动排序。
此外,实现Comparable接口的对象可用作为有序映射中的【键】或有序集合中的【集合】,不需要指定的比较器。
Comparable只有一个方法【compara】,比较【Comparable对象】和【指定对象的顺序】,如果Comparable对象,小于/等于/大于指定对象,则分别返回负整数/零/正整数。
- Comparator是比较接口,它是不支持排序(没有实现Comparable接口),我们可以通过建立一个“Comparator的比较器”来进行排序,而且“Comparator的比较器”只需要实现Comparator接口就可以了,也就是说,我们可以通过实现【Comparator】来新建一个比较器,然后通过这个比较器(Comparator)对类进行排序。
注意:
若一个类要实现Comparator接口:它一定要实现compare(T o1,T o2)函数。
五:Map集合
定义:Map接口中【键】Key和【值】Value--映射,可以通过【键】来获取值。》【键值对】
- 定义一个键和一个值,该值存储在一个【Map】中之后,通过该键来访问对应的值。
- 当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常。
- 当对象的类型和Map里面元素的类型不兼容的时候,就会抛出ClassCastException异常。
- 当不允许使用Null对象的Map中使用Null对象,就会抛出NullPointerException异常。
- 当尝试修改一个【只读Map时】--》final的问题,会抛出UnsupportedOperationException异常。
Map常用方法:
- put(K key,V value):取值,相当于List的add--》
- putAll(Map m):把一个映射关系添加到另外一个关系,相当于addAll。
- remove(Object key)根据key去移除一个东西--》
- get():根据key去获取value--->
- put(K key,V value):也有修改的作用---》
六:TreeMap类
定义:TreeMap中提供了根据key顺序访问key---value对的方法。
注意:TreeMap就是TreeSet的一个key。
七:JAVA集合工具类:Collections
定义:主要操控Set、List。
排序操作方法(sort):
- reversr(List list):进行反向排序--à
- shuffe(List list)对指定的数据进行一次随机的顺序置换->每次的顺序都不一样
- sort(List list)根据自然顺序进行一个升序的排序
- swap(List list,int I,int j)指定位置进行元素的交换
- rotate(List list,int distance)根据指定的距离来轮换表中的元素
八:JAVA集合的总结点
1、List、Set、Map是集合体系中最主要的三个接口;Listh和Set同属于Collections接口,Map是单独属于Map集合的一个接口。
- List是一个有序允许元素重复,并且允许元素为空;最常见的实现类:【ArrayList】。
- ArrayList适合查找,不适合指定位置的插入,删除操作。
-
- Set是一个无序的,不允许元素重复;HashSet和TreeSet是两个实现类
-
- Comparator和Comparable的区别
- Comparator定义在类的外部,此时我们的类的结构不需要有任何变化,从小到大:o1-o2 从大到小:o2-o1
- Comparable定义在类的内部,从小到大:this-o 从大到小:o-this
- Comparator和Comparable的区别