黑马程序员 集合类

------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

1、Collection
    List:ArrayList,LinkedList,Vector  //特点:元素的有序的,元素可以重复。因为该集合

体有索引
    Set:HashSet,TreeSet  //特点:元素无序,元素不可重复

2、ArrayList 集合
    添加 ArrayList .add(str)
    删除 ArrayList .clear()
    判断 ArrayList .contains(str)
    获取 ArrayList .size()
    取交集 arr.retainAll(arr2) //取交集,arr中与arr2中相同元素
    去交集 arr.removeAll(arr2) //删除arr中与arr2中相同元素

3、迭代器:Iterator
    什么是迭代器?
    其实是集合的取出元素的方式。


ArrayList arr=new ArrayList();
...
Iterator it=arr.iterator()//获取迭代器,用于取出集合中的元素
while(it.hasNext())//判断有无下一个。  it.hasPrevious反向取
{
    sop(it.next());//依次取出        it.previous()
}


4、List 特有的方法:凡是可以操作角标的方法都是该体系特有的方法。
    增    add(index,element);addAll(index,Collection)
    删    remove(index)
    改    set(index,element)
    查    get(index);subList(from,to);listIterator();

    List集合特有的迭代器。ListIterator是Iterator的子接口

    在迭代时,不可以通过集合对象的方法操作集合中的元素,
    因为会发生ConcurrentModificationException异常(并发异常)
    所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法有限,
    只能对元素进行判断、取出、删除的操作
    
    如果想要其他的操作如添加、修改等,就需要使用其子接口,ListIterator
    该接口只能通过List集合的ListIterator方法获取

5、List常见对象
    ArrayList  :底层的数据结构使用的是数组结果。特点:查询速度很快,但是增删稍慢,线

程不同步-》效率高。默认长度为10,超过延长5
    LinkedList :底层使用的链表数据结构。特点:增删速度很快,查询稍慢。
    Vector     :底层的数据结构。线程同步。被ArrayList替代,默认长度为10,超过延长10
    

6、Vector :
    枚举是Vector特有的取出方式

    发现枚举和迭代器很象
    其实枚举和迭代是一样的

    因为枚举的名称以及的方法的名称都过长。
    所以被迭代器取代了。
    
        Vector v=new Vector();
        v.add("01");
        v.add("02");
        v.add("03");
        v.add("04");
        
        Enumeration e=v.elements();
        while (e.hasMoreElements()) {
            System.out.println(e.nextElement());
7、(面试题)
    LinkedList特有方法
    addFirst()     addLast()
    getFirst()     getLast()// 获取第一个(最后一个)元素
        如果集合中没有元素,会出现NoSuchElementException
    removeFirst()  removeLast()//获取第一个(最后一个)元素,并将其删除
        如果集合中没有元素,会出现NoSuchElementException
    
    在jdk1.6出现了迭代方法
    offerFirst();  offerLast();
        添加
    peekFirst();    peekLast();
        获取第一个(最后一个)元素,如果集合中没有元素,会返回null
    pollFirst()      pollLast()
        获取第一个(最后一个)元素,并将其删除,如果集合中没有元素,会返回null


8、(注)al.add(new Person("wang", 1));//   al.add(object obj);//object obj=new Person

("wang", 1);此时升级。

9、set:元素无序(按地址值存),不可重复。
    HashSet: 底层数据结构是哈希表
        HashSet是如何保证元素唯一性呢?
        是通过元素的两个方法,hashCode和equals来完成。
        如果元素的HashCode值相同,才会判断equals是否为true.
        如果元素的hashcode值不同,不会调用equals

        注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashcode和equals方法。
    TreeSet:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值