Java Collection

Java集合,也称为容器,主要由两大接口Collection和Map派生而来。

Collection接口:存放一组不唯一,无序的对象

Collection 是最基本的集合接口,一个Collection代表一组Object
Collection派生出三个子接口:List, Set, Queue.
操作集合:
增:
向集合添加元素e,若指定集合元素改变了则返回true

boolean add(E, e);

把另一个集合的元素全部添加到集合中,若指定集合元素改变返回true

boolean addAll(Collection<? extends E> c);

删:
删除指定元素

boolean remove(Object o);

删除集合中所有元素

boolean removeAll(Collection<?> c);

查:
如果包含指定元素返回true

boolean contains(Object o);

如果此集合包含指定集合所有元素返回true

boolean containsAll(Collection<?> c);

改:
无直接操作

List接口:存放一组不唯一, 有序的元素

List是一个有序的Collection,能够通过索引访问List中的元素
实现List接口的集合主要有:ArrayList、LinkedList、Vector、Stack

1)ArrayList:
ArrayList是一个动态数组,允许任何符合规则的元素插入,每个ArrayList都有一个初始容量。每次向容器中增加元素时会进行容量检查,如果溢出就会进行扩容操作。

ArrayList<泛型> list=new ArrayList<>();

2)LinkedList:
LinkedList是一个双链表,内部以链表的形式保存集合中元素,在随机访问元素性能上较差,而在插入删除元素时有较好的性能

LinkedList<泛型> list = new LinkedList<>();

3)Vector:
Vector是矢量变量,它的操作是线程安全的,操作和ArrayList几乎一样

Vector vec = new Vector();

4)Stack:
Stack继承自Vector,对Vector进行了扩展,提供5个额外的方法使其可以当作栈堆使用
empty()
peek():查看堆栈顶部的对象,但不从堆栈中移除它
pop():移除堆栈顶部的对象,并作为此函数的值返回该对象
push(E item):把项压入堆栈顶部
search(Object o)

5)Iterator:
Iterator是一个接口,它是集合的迭代器。集合可以通过Iterator去遍历集合中的元素
提供以下接口:
boolean hasNext(): 判断集合里是否存在下一个元素
Object next():返回集合里下一个元素
void remove():删除集合里上次next返回的元素
实例:

import java.util.ArrayList;
import java.util.Iterator;

public class testIterator {
	public static void main(String[] args) {
	    //创建集合
		ArrayList<String> str = new ArrayList<String>();
		str.add("Marry");
		str.add("Tom");
		str.add("Tomas");
		str.add("Nancy");

        //获取迭代器
		Iterator<String> it = str.iterator();
		
		//遍历集合
		while(it.hasNext()) {
			System.out.println(it.next());
		}
	}
}

ListIterator继承Iterator接口,在Iterator的基础上增加了几个方法:
boolean hasPrevious():判断集合里是否有上一个元素,有则返回true
Object previous():返回集合上一个元素
void add(Object o):在指定位置插入一个元素

ListIterator增加了向前迭代的功能,还可以通过add向集合里添加元素。Iterator只能删除。

Set接口:存储无序,不重复元素

set不允许存储相同的元素,所以把相同的元素添加到同一个集合中,则操作失败,新元素不会添加,add()方法返回false

1)HashSet类:无序
HashSet是Set集合最常用实现,按照hash算法来存储元素,有很好的存取和查找性
特点:

  • 不能保证元素的顺序
  • 不是线程同步
  • 集合元素值可以是null
    HashSet存储元素时,调用对象的hashCode()方法得到其hashCode值,根据hashCode值得到决定改对象的存储位置
    HashSet判断两个元素是否相等:
    (1)equal()方法比较值
    (2)hashCode()方法返回值相等

2)LinkedHashSet类:有序
HashSet的一个子类,采用哈希表存储结构,使用链表维护次序。
根据hashCode()值来决定存储位置,但用链表来维护元素的次序, 元素的顺序与添加顺序一致

3)TreeSet类:
插入的同时就立刻排序
支持两种排序方法:自然排序和定制排序, 默认为自然排序
自然排序:
调用compareTo(Object obj)方法比较元素大小,按照升序排序,该方法返回0,两数相等;返回一个正数,obj1大于obj2;返回负数,obj1小于obj2
定制排序:
在创建TreeSet集合对象时,提供一个Comparator对象与该TreeSet集合关联,有Comparator对象负责元素的排序逻辑

自然排序实现Comparable接口,定制排序实现Comparator接口在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值