Java教程

java集合框架

本文主要是介绍java集合框架,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Collection父接口

boolean add(Object obj) //添加一个对象
boolean addAll(Collection c) //将一个集合中的所有对象添加到此集合中
void clear() //清空此集合中的所有内容
boolean contains(Object o) //检查此集合中是否包含o对象
boolean equals(Object o) //比较此集合是否与指定对象相等
boolean isEmpty() //判断此集合是否为空
boolean remove(Object o) //在此集合中移除o对象
int size() //返回此集合中的元素个数
Object[] toArray() //将此集合转换成数组

使用迭代器遍历:

Iterator it = collection.iterator();
while(it.hasNext()) {
	Object obj = it.next(); //迭代过程中不能使用collection.remove()方法,可用it.remove()方法
}

List子接口(有序、有下标、可重复)

void add(int index, Object o) //在index位置插入对象o
boolean addAll(int index, Collection c) //将一个集合中的元素添加到此集合中的index位置
Object get(int index) //返回集合中指定位置的元素
List subList(int fromIndex, int toIndex) //返回fromIndex和toIndex之间的集合元素

ListIterator迭代器可用向前或向后遍历,添加、删除、修改元素

list->数组:Integer[] arr = list.toArray(new Integer[0]);
数组->list:List< Integer > list2 = Arrays.asList(arr); //受限集合,不能添加和删除
Integer[] arr2 = {100,200,333};
List< Integer > list2 = Arrays.asList(arr2);

ArrayList(数组实现,查询快,增删慢,线程不安全)

DEFAULT_CAPACITY=10,默认容量
	注意:如果没有向集合中添加任何元素时,容量为0
elementData ,存放元素的数组
size ,实际元素的个数
扩容为原来的1.5倍

Vector(数组实现,查询快,增删慢,线程不安全)

LinkedList(链表实现,增删快,查询慢)

Set集合(无序、没有下标、不能重复)

HashSet

基于HashCode实现元素不重复;
当存入元素的哈希码相同时,会调用equals进行确认,如果结果为true,则拒绝后者存入;
存储结构:哈希表(数组+链表+红黑树)
存储过程:(1)根据hashcode计算保存的位置,如果此位置为空,则直接保存,如果不为空则执行第2步;
(2) 再执行equals方法,如果equals方法为true,则认为是重复,否则,形成链表;

TreeSet

基于排序顺序实现元素不重复;
实现了SortedSet接口,对集合元素自动排序;
元素对象的类型必须实现Comparable接口,指定排序顺序;
通过CompareTo方法确定是否为重复元素;
存储结构:红黑树

Map

用于存储任意键值对(Key-Value)
键:无序、无下标、不允许重复(唯一)
值:无序、无下标、允许重复

遍历:1、用keySet()拿到键

for(String key : map.keySet()) {
	System.out.print(key+map.get(key));
}

2、用entrySet()方法拿到映射对,效率更高

Set < Map.Entry< String, String > > entries = map.entrySet();
for(Map.Entry< String, String> entry : entries){
	System.out.print(entry.getKey()+entry.getValue());
} 

HashMap(线程不安全,效率高,允许用null作为key或者value)

存储结构:哈希表(数组+链表+红黑树)
未put元素时table是null,size为0,放入put后,size初值为16,α填装因子为0.75,若size不够则翻倍;
jdk1.8之后每个链表(尾插)长度大于8时,并且元素个数大于等于64时,调整为红黑树;
HashSet实际上用的是HashMap的key;

Hashtable(线程安全,效率低,不允许null作为key或者value)

TreeMap(实现SortedMap接口,对key自动排序)

类似TreeSet类要实现Comparable接口,指定排序顺序;

Colletions工具类(集合工具类,定义除了存取以外的集合常用方法)

void reverse(List<> list) //反转集合中元素顺序
void shuffle(List<> list) //随机重置集合元素顺序
void sort (List<> list) //升序排序(必须要实现Comparable接口)
int binarySearch(List<> list, T t)//未找到为负数
void copy(List<> dest, List<> list)//注意两个list的长度要相同才能复制

这篇关于java集合框架的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!