Colllection接口
List接口(列表)
List的特点
有序性
允许有重复的元素
List的常用方法
方法名称
描述
返回类型
add(Ele)
参数类型为Object (追加)
boolean
add(index,Ele)
指定位置添加元素
void
addAll(Col)
参数为Collection集合 (追加)
boolean
addALL(index,Col)
boolean
contains(Ele)
boolean
containsAll(Col)
boolean
clear()
移除列表中的所有元素
void
get(index)
返回索引为index的元素
void
isEmpty()
boolean
size()
返回列表中元素个数
int
remove(Ele/index)
boolean
removeAll(Col)
boolean
set(index,Ele)
将索引为index的元素替换为Ele
成功则,返回被被替换掉的元素
toArray
返回一个对象数组(数组元素的顺序与列表一样)
Object
ArrayList实现类
构造方法
ArrayList()
无参构造
ArrayLis(int Size)
指定初始容量
ArrayList(Col)
中的初始元素
Vector实现类
一般情况使用ArrayList代替
LinkedList实现类
构造方法
LinkedList()
无参构造
LinkedList(Col)
指定初始元素
List实现类
ArrayList的底层为数组LinkedList的底层为双链表
ArrayList和LinkedList的功能方法没有同步
数组转为列表
public static List asList(T array)//方法签名
public static void main(String[] args) {
Integer[] array = {1,3,4,2,423,11,234,23,42,34,23};
List lst = Arrays.asList(array);
System.out.println( lst );
//Iterator iterator = lst.iterator();
//while(iterator.hasNext()) {
//System.out.println( iterator.next());
//}
}
Set接口(集合)
Set的特点
无序性
不允许有重复的元素
Set的常用方法
add(Ele)
boolean
addAll(Col)
boolean
clear()
void
isEmpty()
boolean
remove(Ele)
boolean
removeAll(COl)
boolean
size()
int
contains(Ele)
boolean
retainAll(Col)
将参数集合中有的元素从Set集合中移除
boolean
toArray()
对象数组
HashSet实现类
构造方法
HashSet()
无差构造,默认容量16
HashSet(int Size)
指定初始容量
HashSet(COl)
指定初始元素
HashSet允许添加null值但只能添加一次
LinkedHashSet实现类
特点
采用双链表实现,有序,元素不重复。
构造方法
LinkedHashSet()
无参构造方法
初始容量16
LinkedHashSet(int Size)
LinkedHashSet( COl )
SortedSet接口与TreeSet实现类
特点:
SortedSet继承于Set接口,TreeSet为SortedSet的一个实现类
SortedSet是一个Sorted类型
实现该接口的类将按元素的天然顺序自动排序,与插入的顺序无关。
常用方法
first()
返回第一个元素(最小的元素)
Object
last()
..
Object
headSet(Ele)
返回一个包含小于Ele的SortedSet
sortedSet
tailSet(Ele)
...大于
sortedSet
subSet(fromEle,toEle)
返回>=formEle&&
sortedSet
TreeSet实现类
特点
天然有序,无论以什么顺序插入元素,在遍历的时候都是有序的
没有采用哈希存储策略,TreeSet采用的是二叉树结构存储
构造方法
方法名称
描述
TreeSet()
无参构造,创建一个空的TreeSet对象
TreeSet( SortedSet s)
含有指定元素
TreeSet( Col )
含有指定元素
TreeSet( Comparator c)
具有指定比较器的空TreeSet对象
定制SortedSet排序规则
实现Comparator接口(比较器)达到其他排序需求。(重写compare方法)
package test_02;
import java.util.*;
public class set_text {
public static void main(String[] args) {
Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
List lst = Arrays.asList(array);
Set sortSet = new TreeSet( new Agecompare() );
sortSet.addAll(lst);
System.out.println( sortSet );
}
public static class Agecompare implements Comparator {
public int compare(Integer o1, Integer o2) {
return (int)o2-(int)o1;//逆序
}
}
}
Map接口
特点
Map也被称为健/值集合。
键和值都是对象。
健对象用来在Map中唯一标识一个值对象。
健对象在Map中不能重复出现。*
Map接口的常用方法
clear()
void
containsKey(key)
boolean
containsValue(value)
boolean
get(key)
获取健名为key的健值
Object
isEmpty()
boolean
put(key,value)
如果存在key,这将value添加进去并与其关联,不存在这都添加然后关联起来
Object,返回value
putAll(Map t)
...
void
remove(key)
移除key所关联的值value,并将其值value返回
Object
size()
返回键值对的个数
int
HashMap 实现类
特点:
该类通过对键计算哈希码来决定值的存储。
键值允许为nul
无序
构造方法
方法名
描述
返回值类型
HashMap()
无参构造,初始容量为16
HashMap(Map m)
指定初始内容
Hashtable实现类
一般情况用HahMap代替
LinkedHahMap实现类
特点
通过双链表的方式实现Map
Oredered类型
插入删除效率比HashMap低。
顺序存储
构造方法
LinkedHashMap()
无参构造
LinkedHashMap(int Size)
LinkedHashMap(Map m)
SortedMap接口与TreeMap实现类
特点
SortedMap为一个继承于Map的接口,TreeMap为SortedMap的一个实现类。
实现SortedMap的接口类不管以什么顺序插入元素,都会按键的天然顺序自动排序。
SortedMap的常用方法
firstKey()
返回SortedMap中第一个对象(最小的元素)
Object
lastKey())
...最大..
Object
headSet(Ele)
SortMap
TrailSet(Ele)
SortMap
subSet(formElE,lastEle)
SortedMap
TreeMap实现类
特点
天然有序(一键名为依据)
构造方法
TreeMap()
无参构造,创建一个空的TreeMap对象
TreeMap(SortedMap s)
指定初始元素
TreeMap(Map c)
TreeMap(COmparator c)
指定比较器
栈
java.uitl.Stack
继承于Vector类,利用Vector实现的
Stack的常用方法
empty()
booean
peek()
查看栈顶元素
Object
pop()
移除栈顶元素
Object
push(Ele)
将Ele元素进栈
search(Object 0 )
返回指定元素Ele在栈中的位置,没有返回-1
int
队列
Deque接口
Deque接口的常用方法
peek()
返回队列中的第一个元素,队列为空则返回null
Object
size()
int
pop()
移除队列中的第一个元素,队列为空则抛出异常
Object
push(Object o)
添加...,队列满时抛出异常
void
ArrayDeque实现类
ArrayDeque的构造方法
ArrayDeque()
ArrayDeque(int size)
指定初始容量
ArrayDeque(COl)
指定初始元素
遍历
特点
对于List而言,可以通过索引来遍历
对Set而言,可以使用迭代器
所有实现Collection接口的类都有一个Iterator的方法来获取迭代器
Iterator
Iterator的常用方法
HashNext()
判断是否还有没有遍历的元素
boolean
next()
获取到集合中下一个将要遍历的元素,如果没有要遍历的元素则,抛出NoSuchElementException异常
Object
remove()
将下一个要遍历的元素从遍历的范围中移除
void
集合的遍历
迭代器遍历:
package test_02;
import java.util.*;
public class set_text {
public static void main(String[] args) {
Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
List lst = Arrays.asList(array);
TreeSet sortSet = new TreeSet( lst );
Iterator iterator = sortSet.iterator();//获取迭代器
while(iterator.hasNext()) {
System.out.print(iterator.next()+ ",");
}
}
}
for-each遍历:
package test_02;
import java.util.*;
public class set_text {
public static void main(String[] args) {
Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
List lst = Arrays.asList(array);
TreeSet sortSet = new TreeSet( lst );
Iterator iterator = sortSet.iterator();//获取迭代器
for (Integer valeu : sortSet) {
System.out.print(valeu + ", ");
}
}
}
List的索引遍历
package test_02;
import java.util.*;
public class set_text {
public static void main(String[] args) {
Integer[] array = {1,3,4,2,4,11,234,23,42,34,23};
List lst = Arrays.asList(array);
for(int i=0 ;i
System.out.print( lst.get(i)+ "," );
}
}
}
映射的遍历
1.Map提供的获取键或值的方法
名称
描述
返回值类型
keySet()
返回一个包含map中所有键的对象的集合
Set
values()
返回一个包含map中所有值对象的集合
Collection
集合元素的常用操作
描述
java.util.Collections类是一个工具类,该类的方法都是静态方法。
方便对集合的排序,搜索等操作。
元素的排序
collections提供了两个sort方法用于对元素的排序。
public static void sort(List list)
public static void sort(List list,comparator c)
搜索特定元素
collections提供了两个binarySearch方法用来搜索列表中特定元素
binarySeach方法常用的是二分法搜索,只能对已有序的列表搜索。
public static int binarySearch(List list,Object Ele)
public static int binarySearch(List list,Object Ele,comparator c)
任意打乱元素的顺序
collections提供了suffle方法来打乱列表中元素的顺序。
public static void shuffle(List list)
其他方法(静态)
addAll(col,Object o)
将对象o添加到col( collection )集合中
boolean
copy(List ls1,List ls2)
将列表ls2中的内容复制到ls1中
void
disjoint(col_1,col_2)
比较col_1与col_2是否有相同的元素,没有则返回false
boolean
fill(List ls,Object o)
填充
void
reverse(List ls)
将列表ls反转
void
swap(List ls,int i,int j)
交换ls列表中索引为i和j所对应的值
void
hashCode方法
使用哈希时,本存储的对象需要一个哈希码(hash code 一般是一个整数)。
hashCode方法用于计算提供一个哈希码。
工作原理:
进入哈希存储之前,首先调用hashSet获取一个哈希码,来定位哈希桶
在哈希桶中,不同对象是按照线性表的方式存储的
哈希码决定了分离度,处理好分离度是提高效率的关键因素
eg: 在向HashSet集合添加(调用add方法)元素时,会首先调用hashCode方法来定位哈希桶,如果是空桶就会直接存进去,否者会调用equals方法来查看该桶中是否含有与其相同的对象,没有则存进去,否者存储失败。
所以通常情况下,equals与hashCode要么都重写,要么都不重写。且equals为true的两个对象的hashCode必须相同,hashCode不相同的两个对象的equals必须为false。