day17_集合框架

12-常用对象API(集合框架-Vector集合)

 

只是讲解了Vector迭代的特有方法而已,但是我们现在一般都不用了,只是作为了解而已

public static void main(String[] args) {

 

        Vector v = new Vector();

       

        v.addElement("abc1");

        v.addElement("abc2");

        v.addElement("abc3");

        v.addElement("abc4");

       

        Enumeration en =v.elements();

        while(en.hasMoreElements()){

            System.out.println("nextelment:"+en.nextElement());

        }

       

        Iterator it =v.iterator();

       

        while(it.hasNext()){

            System.out.println("next:"+it.next());

        }

       

    }

 

13-常用对象API(集合框架-LinkedList集合)

        LinkedList link =new LinkedList();

       

        link.addFirst("abc1");

        link.addFirst("abc2");

        link.addFirst("abc3");

        link.addFirst("abc4");

//      System.out.println(link);

//      System.out.println(link.getFirst());//获取第一个但不删除。

//      System.out.println(link.getFirst());

       

//      System.out.println(link.removeFirst());//获取元素但是会删除。

//      System.out.println(link.removeFirst());

       

        while(!link.isEmpty()){

            System.out.println(link.removeLast());

        }

       

       

        System.out.println(link);

//      Iterator it =link.iterator();

//      while(it.hasNext()){

//          System.out.println(it.next());

//      }

    }

 

14-常用对象API(集合框架-LinkedList集合-练习(堆栈和队列))

下面讲一个在面试中经常会被出的面试题

/*

 * 请使用LinkedList来模拟一个堆栈或者队列数据结构。

 *

 * 堆栈:先进后出 First In Last Out  FILO

 *

 * 队列:先进先出 First In First Out FIFO

 *

 * 我们应该描述这样一个容器,给使用提供一个容器对象完成这两种结构中的一种。

 */

并不是需要你把这样一个效果演示完,而是需要你做一个这样的容器出来,是我要给你提供一个对象,这个对象就能实现,你怎么存进去,你调用我的方法时候就能怎么取出来,你得去把这种结构封装起来

 

这里面的代码就不贴出来了,先自己去做一下,

 

LinkedList:

 

    addFirst();

    addLast():

    jdk1.6

    offerFirst();//在此列表的开头插入指定的元素

    offetLast();

   

   

    getFirst();.//获取但不移除,如果链表为空,抛出NoSuchElementException.

    getLast();

    jdk1.6

    peekFirst();//获取但不移除,如果链表为空,返回null.

    peekLast():

   

    removeFirst();//获取并移除,如果链表为空,抛出NoSuchElementException.

    removeLast();

    jdk1.6

    pollFirst();//获取并移除,如果链表为空,返回null.

    pollLast();

15-常用对象API(集合框架-ArrayList集合存储自定对象)

什么时候对象装箱也,就是在基本数据类型转换为引用数据类型的时候装箱,当引用数据类型和基本数据类型做运算的时候就是拆箱

这一讲的主要讲的是定义一个ArrayList,然后往这里面存入Person,然后再把这里面的数据遍历出来(这个例子就不贴出来了,自己去做一下)

 

16-常用对象API(集合框架-HashSet集合)

 

17-常用对象API(集合框架-哈希表_1)

在使用HashSet在存储元素的时候也,有一个hash算法


在往这个HashSet里面存元素的时候也,在保存之前也,它会根据这个元素的自身特点中,先算一下,这个元素保存在哪个位置上,然后,就保存在特定的位置上,如果要进行取元素的取元素的话也,也先将要取的这个元素进行hash算法的算,然后直接找到这个元素,这样是不是提高了效率了啊,但是有一个弊端就是不能保存重复的元素,这就是hash算法

 

18-常用对象API(集合框架-哈希表_2)

它这个判断元素相同的方式是什么大家要搞清楚


19-常用对象API(集合框架-HashSet存储自定义对象)


不是说保证唯一吗,怎么会出现这种情况也

那是因为我们没有重写hashCode和equals方法,如果我们重写了hashCode和equals方法都不会出现这种情况

 

 

20-常用对象API(集合框架练习)


这一讲的事例代码是ArrayListTest2.java里面,这我儿的singleDemo方法,这个里面演示的是使用的字符串,字符串也使用集合里面的contains方法来进行判断,是否包含这个对象

 

下面讲解ArrayList里面保存的是自定义对象

contains方法里面判断元素相同的依据是什么呢,内部是使用的equals方法来进行判断,那我们存储自定义对象的时候,只需要重写这里面的equals方法就可以了,像ArrayList他们在判断元素相同仅仅使用元素的equals方法

 

21-常用对象API(集合框架-LinkedHashSet集合)

这个时候也hashSet稍为有点不好就是,是不是无序的啊,我们想保证唯一还想有点序,这个就是LinkedHashSet的功能了

 

Demo事例的例子是LinkedHashSetDemo.java

 

Set:元素不可以重复,是无序。

    Set接口中的方法和Collection一致。

    |--HashSet:内部数据结构是哈希表 ,是不同步的,此类允许使用 null 元素。。

        如何保证该集合的元素唯一性呢?

        是通过对象的hashCode和equals方法来完成对象唯一性的。

        如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。

        如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。

        如果为true,视为相同元素,不存。如果为false,那么视为不同元素,就进行存储。

       

        记住:如果元素要存储到HashSet集合中,必须覆盖hashCode方法和equals方法。

        一般情况下,如果定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。

        建立对象判断是否相同的依据。

 

 

22-常用对象API(集合框架-TreeSet集合)

只要对象想要进行比较,就实现这个comparble接口

|--TreeSet:可以对Set集合中的元素进行排序。是不同步的。

                判断元素唯一性的方式:就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。

               

                TreeSet对元素进行排序的方式一:

                让元素自身具备比较功能,元就需要实现Comparable接口。覆盖compareTo方法。

               

                如果不要按照对象中具备的自然顺序进行排序。如果对象中不具备自然顺序。怎么办?

                可以使用TreeSet集合第二种排序方式二:

                让集合自身具备比较功能,定义一个类实现Comparator接口,覆盖compare方法。

                将该类对象作为参数传递给TreeSet集合的构造函数。

 

23-常用对象API(集合框架-TreeSet集合-Comparator比较器)

24-常用对象API(集合框架-TreeSet集合-二叉树).


25-常用对象API(集合框架-TreeSet集合练习-字符串长度排序



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值