首页 > 代码库 > Java集合
Java集合
Java集合:就是将若干用途、性质相同或者相近的“数据”组合而成一个整体。
·从体系上讲,集合类型可以归纳为三种:
1.集(set):Set集合中不区分元素的顺序,不允许出现重复元素
2.列表(List):List集合区分元素的顺序,且允许包含重复元素。
3.映射(Map):映射中保存成对的“键-值”(Key-Value)信息,映射中不能包含重复的键,每个键最多只能映射一个值。
·Java集合中只能保存引用类型的数据,实际上存放的是对象的引用,而非对象本身,集合中元素相当于引用类型变量。
Collection接口:
·java.util.Collection接口是描述Set和List集合类型的根接口,其中定义了有关集合操作的普遍性方法:
boolean add(Object o)
boolean remove(Object o)
int size() //返回集合中元素个数
boolean isEmpty() //判断是否为空
boolean contains(Object o) //是否包含元素
void clear() //清空集合
Iterator iterator() //统一遍历
Object[] toArray() //将集合转换成数组
·java.util.Set和java.util.List都是Collection的子接口,分别描述前述的集和列表结构。
·List接口规定使用者可以对列表元素的插入位置进行精确控制,并添加了根据元素索引来访问元素等功能,接口中新添加了相应方法:
void add(int index,Object element)
Object get(int index)
Object set(int index,Object element)
int indexOf(Object o)
Object remove(int index)
·java.util.Map接口描述了映射结构,Map结构允许以键集、值集合或键-值映射关系集的形式查看某个映射的内容。
主要方法:
Object put(Object key,Object value) //加入键值对
Object get(Object key)
boolean isEmpty()
void clear()
int size()
boolean containsKey(Object key)
boolean containsValue(Object value)
Set keySet()//返回所有映射集合
Collection values()
·java.util.ArrayList类实现了List接口,用于表述长度可变的数组列表。
·ArrayList列表允许元素取值为null。提哦那个了一些方法来操作列表容量的大小,包括:
public ArrayList()
public ArrayList(int initialCapacity)
public void ensureCapacity(int minCapacity)
public void trimToSize()
·java.util.Vector也是实现了List接口,其描述的也是可变长度的对象数组。
·与ArrayList的差别:Vector是同步(线程安全)的,运行效率要低一些,主要用在在多线程环境中,而ArrayList是不同步的,适合在单线程中使用。
常用方法:
public Vector()
public Object elementAt(int index)
public void addElement(Object obj)
public void removeElementAt(int index)
public void instertElementAt(Object obj,int index)
public boolean removeElement(Object obj)
public void removeAllElements()
public Object[] toArray()
·java.util.Stack类(栈)继承了Vector类,对应数据结构中“后进先出”Last in first out方式存储和操作数据的对象栈。
常规栈操作方法:
public Strack()
public Object push(E item)
public Object pop()
public Object peek()
public boolean empty()
public void clear()
public int search(Object o)
·java.util.Iterator接口描述的是以统一方式对各种集合元素进行遍历/迭代的工具,也称“迭代器”。
·允许在“遍历”过程中移除集合中的(当前遍历到的那个)元素。
主要方法:
boolean hasNext() //判断下一个元素还有数据给遍历
Object next() //返回下一个元素的句柄
void remove() //移除当前遍历到的元素
·java.util.HashSet类实现了java.util.Set接口,描述典型的Set集合机构。
其中不允许出现重复元素,不保证集合中元素的顺序。
HashSet中允许包含值为null的元素,但最多只能有一个null元素。
·java.util.TreeSet类也实现了java.util.Set,它描述的是Set的一种变体——可以实现排序功能的集合。
在将对象元素添加到TreeSet集合中时会自动按照某种比较规则将其插入到有序的对象序列中,以保证TreeSet集合元素组成的对象序列时刻按照“升序”排列。
·java.lang.Comparable接口中定义的compareTo()方法用于提供对其实现类的对象进行整体排序所需的比较逻辑。
·实现类基于compareTo()方法的排序被称为自然排序。而compareTo()方法被称为它的自然比较方法,具体的排序原则可由实现类根据需要而定。
用户在重写compareTo()方法以定制比较逻辑时,需要确保其与等价性判断方法equals()保持一致。
·java.util.HashMap类实现了java.util.Map接口,该类基于哈希表实现了前述的映射集合结构。
HashMap结构不保证其中元素(映射信息)的先后顺序,并且允许使用null”值“和null”键“。
当集合中不存在当前检索的“键”所对应的映射值时,HashMap的get()方法会返回空值null,而不会运行出错。
影响HashMap性能的两个参数:
·初始容量(Initial Capacity)
·加载因子(Load Factor)
·java.util.Hashtable与HashMap作用基本相同,也实现了Map接口,采用哈希表的方式将“键”映射到相应的“值”。
它们的差别:
1.Hashtable中元素的“键”和“值”均不允许为null,而HashMap则允许。
2.Hashtable是同步的,即线程安全的,效率较低,适合多线程环境使用;而HashMap是不同步的,效率高,提倡在单线程使用。
·java.util.Enumeration接口作用与Iterator接口类似,但只提供遍历Vector和Hashtable(及子类Properties)类型集合元素的功能,且不支持集合元素的移除操作。
·java.util.Collections类中定义了多种集合操作的方法,实现了对集合元素的排序、取极值、批量拷贝、集合结构转换、循环移位以及匹配性检查等功能。
主要方法:
public static void sort(List list)
public static void reverse(List list)
public static void shuffle(List list)
public static void copy(List dest,List src)
public static ArrayList list(Enumeration e)
public static int frequency(Collection c,Object o)
public static T max(Collection coll)
public static T min(Collection coll)
public static void rotate(List list,int distance)
·java.util.Arrays类定义了多种数组操作方法。实现了对数组元素的排序、填充、转换为列表或字符串形式、增强的检索和深度比较等功能。
主要方法:
public static List asList(Object...a)
public static void sort(<类型>[] a)
public static int binarySearch(int[] a,int key)
public static String toString(int[] a)
Java集合