Collection:
List:
ArrayList:它长于随机访问元素,但是在List的中间插入和移除元素时较慢
LinkedList:它通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问,LinkedList随机访问方面相对比较慢。
它还添加了可以使其用作栈,队列和双端队列的方法,例如,getFirst()和element()完全一样,它们都返回列表的头(第
一个元素),而并不移除它,如果List为空,则抛出NoSuchElementException,peek()方法与这两个方法只稍有差异,它在列表为空时
返回null.
removeFirst()与remove()也是完全一样的,它们移除并返回列表的头,而在列表为空时抛出NoSuchElementException。 poll()稍有差异,
它在列表为空时返回null.
addFirst()与add()与addLast()相同,它们都将某个元素插入到列表的尾端。
removeLast()移除并返回列表的最后一个元素。
LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,因此LinkedList可以用作Queue的一种实现,通过将LinkedList向上转型为Queue
如:Queue queue = new LinkedList
queue.offer()方法:将一个元素插入到队尾
peek()和element()都将在不移除的情况下返回队头,但是peek()方法在队列为空时返回null,而element()会抛NoSuchElementException
Poll()和remove()方法将移除并返回队头,但poll为空时返回null,remove会抛出NoSuchElementException
PriorityQueue:优先级队列对Queue做了优化,它声明了下一个弹出元素是最需要的元素(具有最高的优先级),当你在PriorityQueue上调用offer()方法来
插入一个对象时,这个对象会在队列中被排序。默认的排序将使用对象在队列中的自然顺序,但是你可以通过提供自己的Comparator来修改这个
顺序。PriorityQueue可以确保当你调用peek(),poll()和remove()方法时,获取的元素将是队列中优先级最高的元素。
Set:
HashSet:数据杂乱存储,这种技术是最快的查找元素方式(因为要查找速度,所以打印时没有顺序),使用的是散列函数
TreeSet:按升序存储:如a,b,c ,将元素洊储在红-黑树数据结构中,
LinkedHashSet:按数据的插入顺序存储,因为查询速度的原因也使用了散列。
Map:
HashMap:与HashSet一样,HashMap也提供了最快的查找技术
可以使用containsKey()和containsValue()来查看它是否包含某个键或某个值
Map的应用:判断某个数在一个随机数中出现的次数(键是由Random产生的数字,而值是该数字出现的次数)
public static void main(String args[])
{
Random ran = new Random();
Map map = new HashMap();
for(int i=0;i<1000;i++)
{
int number = ran.nextInt(20)
map.put(number,map.get(number)==null?1:map.get(number)+1);
}
}
TreeMap:按升序存储,
LinkedHashMap:按数据的插入顺序存储
Iterator:只可以向前移动
ListIterator:它只能用于各种List类的访问。而且可以双向移动。方法如:nextIndex(),previousIndex(),hasPrevious(),hasNext()
List:
ArrayList:它长于随机访问元素,但是在List的中间插入和移除元素时较慢
LinkedList:它通过代价较低的在List中间进行的插入和删除操作,提供了优化的顺序访问,LinkedList随机访问方面相对比较慢。
它还添加了可以使其用作栈,队列和双端队列的方法,例如,getFirst()和element()完全一样,它们都返回列表的头(第
一个元素),而并不移除它,如果List为空,则抛出NoSuchElementException,peek()方法与这两个方法只稍有差异,它在列表为空时
返回null.
removeFirst()与remove()也是完全一样的,它们移除并返回列表的头,而在列表为空时抛出NoSuchElementException。 poll()稍有差异,
它在列表为空时返回null.
addFirst()与add()与addLast()相同,它们都将某个元素插入到列表的尾端。
removeLast()移除并返回列表的最后一个元素。
LinkedList提供了方法以支持队列的行为,并且它实现了Queue接口,因此LinkedList可以用作Queue的一种实现,通过将LinkedList向上转型为Queue
如:Queue queue = new LinkedList
queue.offer()方法:将一个元素插入到队尾
peek()和element()都将在不移除的情况下返回队头,但是peek()方法在队列为空时返回null,而element()会抛NoSuchElementException
Poll()和remove()方法将移除并返回队头,但poll为空时返回null,remove会抛出NoSuchElementException
PriorityQueue:优先级队列对Queue做了优化,它声明了下一个弹出元素是最需要的元素(具有最高的优先级),当你在PriorityQueue上调用offer()方法来
插入一个对象时,这个对象会在队列中被排序。默认的排序将使用对象在队列中的自然顺序,但是你可以通过提供自己的Comparator来修改这个
顺序。PriorityQueue可以确保当你调用peek(),poll()和remove()方法时,获取的元素将是队列中优先级最高的元素。
Set:
HashSet:数据杂乱存储,这种技术是最快的查找元素方式(因为要查找速度,所以打印时没有顺序),使用的是散列函数
TreeSet:按升序存储:如a,b,c ,将元素洊储在红-黑树数据结构中,
LinkedHashSet:按数据的插入顺序存储,因为查询速度的原因也使用了散列。
Map:
HashMap:与HashSet一样,HashMap也提供了最快的查找技术
可以使用containsKey()和containsValue()来查看它是否包含某个键或某个值
Map的应用:判断某个数在一个随机数中出现的次数(键是由Random产生的数字,而值是该数字出现的次数)
public static void main(String args[])
{
Random ran = new Random();
Map map = new HashMap();
for(int i=0;i<1000;i++)
{
int number = ran.nextInt(20)
map.put(number,map.get(number)==null?1:map.get(number)+1);
}
}
TreeMap:按升序存储,
LinkedHashMap:按数据的插入顺序存储
Iterator:只可以向前移动
ListIterator:它只能用于各种List类的访问。而且可以双向移动。方法如:nextIndex(),previousIndex(),hasPrevious(),hasNext()