集合

集合

可以存储不同类型的数据

是存储对象数据的容器

集合的长度可以发生变化


Collection  集合的根接口

|-List  有序可重复

|------ArrayList

|------LinkList

|------Vector

|-Set 无序不可重复

|------HashSet

|------LinkHashSet

|------TreeSet


collection常用方法

add(E e)    添加元素之后返回boolean值

		Collection c = new ArrayList();
		c.add("add");

addAll(Collection c)   

		Collection<E> cc = new ArrayList<>();
		cc.add((E) "addAll");
		cc.addAll(c);

clear() remove(Object o)  删除指定元素并返回boolean 值

removeAll(Collection  c)  

		c.removeAll(cc); //删除c集合中与cc的交集元素,也就是重复元素,删除的是c中的元素

retainAll(Collection  c) //保留交集元素
size() // 查看元素的个数
isEmpty() // 是否为空

contains(Object o) // 判断是否存在重复的元素,内部的实现是依赖equals方法

	c.containsAll(c2)//c集合有包含c2集合中的所有元素

containsAll(Collection<?> c) 

toArray() //把集合中的全部元素存储到一个obj 的数组


iterator() //迭代器 返回的是实现类的对象

		Collection c = new ArrayList();
		Iterator it = c.iterator();  //返回一个迭代器   
		// iterator 实际 上返回的是iterator接口的实现类对象。

 boolean hasNext() 如果仍有元素可以迭代,则返回 true。 当前指针指向的位置是否有元素

        public boolean hasNext() {
            return cursor != size;
        }//源码hasNext的实现

		while(it.hasNext()){ // hasNext() 是否有元素可以遍历。
			System.out.println("元素:"+ it.next()); //获取元素
		}

next() 返回迭代的下一个元素。 输出当前的元素,移动指针到下一个元素的位置

 void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 

		//清空集合 的元素
		while(it.hasNext()){
			it.next();
			it.remove();
		}


List

list继承了collection,有序可重复,进去和出来的顺序一致,先进先出
只有List接口下面的集合类才具有索引值,其他集合类都没有索引值

add(int index, E element) //在指定位置插入指定元素

addAll(int index, Collection<? extends E> c)  //添加另一个集合到本集合的末尾处


get(int index) //根据索引值获取元素

indexOf(Object o) //查找指定元素的索引值

lastIndexOf(Object o) //最后一次出现的位置

subList(int fromIndex, int toIndex)  // 截取指定从fromindex 到toindex 的元素(包头不包含尾)

 

set(int index, E element) // 替换指定索引值得元素

  

listIterator() //父接口是literator

hasPrevious()  //判断是否存在上一个元素。

previous()   // 当前指针先向上移动一个单位,然后再取出当前指针指向的元素。

next(); // 先取出当前指针指向的元素,然后指针向下移动一个单位。

add //插入到当前指针的位置

set// 替代迭代器最后一次返回的元素

在迭代器迭代元素 的过程中,不允许使用集合对象改变集合中的元素个数

如果需要添加或者删除只能使用迭代器的方法进行操作。

如果使用过了集合对象改变集合中元素个数那么就会出现ConcurrentModificationException异常。

ArrayLIst

内部实现的是object数组
初始长度为10
ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。

LinkList

hasPrevious()  判断是否存在上一个元素。
previous()    当前指针先向上移动一个单位,然后再取出当前指针指向的元素。

next();  先取出当前指针指向的元素,然后指针向下移动一个单位。
 
add(E e)   把当前有元素插入到当前指针指向的位置上。
set(E e)   替换迭代器最后一次返回的元素。
LinkedList底层是使用了链表数据结构实现的,  特点: 查询速度慢,增删快。 

Vector

维护了一个Object的数组实现的,实现与ArrayList 一样 ,但是Vector是线程安全的,操作效率低。

HashSet

是用一个哈希表来实现的,存取速度快
在判断是否添加相同元素时,不仅要重写hashcode方法还要重写equals方法

TreeSet

是基于二叉树实现
基于元素的自然书顺序排序
如果元素不具备自然顺序则需要继承comparable接口重写comparto方法
compareTo方法返回 的是0,那么该元素就被视为重复元素,不允许添加.
一般都自己写Comparator比较器,在创建treeset对象时传入比较器
class  类名  implements Comparator{
 			
 			}

Collections

工具类
Collections.binarySearch(list, key)  // 二分法查找
Collections.sort(list);// 排序
// Collections.reverse(list);反转元素



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值