List和Set

本文深入探讨Java中的List、Set集合特点及其子实现类,如ArrayList、LinkedList、Vector、HashSet等,并介绍JDK5之后引入的重要新特性,如泛型、增强for循环、静态导入和可变参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:List集合中三个子实现类:

1) ArrayList:底层数据结构是数组,查询快,增删慢;线程不同步,不安全,执行效率高.

     LinkedList:底层数据结构是链表,查询慢,增删快;线程不同步,不安全,执行效率高.

     Vector:底层数据结构是数组,查询快,增删慢;线程同步,安全,执行效率高.(主要是针对枚举)

2) LinkedList特有方法:

      boolean addFirst(Object o);在第一个位置添加元素

      boolean addLast(Object o);在最后一个位置添加元素

      public Object getFirst(); public Object getLast()

      public Object removeFirst();移除第一个元素,返回第一个元素;  public Object removeLast();

3) Vector特有方法:

      public boolean addElement(Object o);

      public Object elementAt'(int index);

      public Enumeration elements();

       public boolean hasMoreElements();

      public Object nextElement();


2:JDK5以后的新特性:

1) 泛型:

      泛型的特点:提高了程序的安全性;将运行时期的异常提到了编译时期;不在需要进行强制的类型转换.

      泛型可以在类,接口,方法,但是更多的是使用在集合上.

      泛型的定义:

                          ArrayList<String> al = new ArrayList<String>();

       泛型的高级特性:

                          <?> :代表的是所有的引用类型,包括自己定义的

                         <? extends E>:代表的是E及其它的子类

                          <? super E>:代表的是E及其它的父类

2) 增强for

       增强for主要就是替代Iteratir出现的,增强for主要遍历集合

3) 静态导入

        可以直接导入类的静态方法,来直接使用

4) 可变参数

         这个方法的参数类型一样,但是数量很多,可以使用可变参数,可变参数最后的形式参数可以当做是一个数组


3:Set集合

      1) Set集合元素是唯一的,而List集合中元素是可以重复的,而且List集合中的元素是有序的.

      2) HashSet元素是无序的,存储和取出的顺序是不一样的,而其中的唯一性是通过hash值来保证的,add();方法中使用了hashMap<K,V>中的put(K,V)方法,计算出相应的hash值.使用HashSet来存储自定义的对象,需要在类中复写equals方法和hashCode()方法,因为在put(K,V)方法中,在hash值相同的情况下,也会通过equals()方法来对对象进行比较.

       3) LinkedHashSet 通过使用链表来保证数据的有序性

       4)TreeSet 是基于TreeMap来实现的,是基于红黑树结构,

TreeSet集合常用有两方法个构造方法:第一个是无参构造;需要自定义的类实现Comparable接口中的compareTo()方法;

 第二个是添加一个Comparator接口类的子实现对象;a)自定义一个类来实现Comparator接口中的compare()方法,b)直接使用匿名内部类的方式来实现Comparetor接口.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值