Java 基础 容器之List

 


   Java语言的容器类中,最像数组的就是List了。这里说的List,是指在java.util包中,List接口及其派生类。List接口有三个派生类最常见,分别是ArrayList、LinkedList和Vector,其中用得最多的是ArrayList。在Java语言的设定中,List是以“有序”容器的面目出现的,所谓的有序,不是说内部成员有排序,恰好相反,List默认是不排序的。所谓的有序,是指其中的成员元素的顺序是可以通过代码指定的。
  让我们还是以容器的常用功能的角度来看看List吧。
  一、创建List容器
    List list = new ArrayList();
  
  List<Integer> list = new ArrayList<Integer>();
     前者是传统语法,后者是泛型容器的语法。所谓泛型容器,即指定了容器内成员元素的数据类型的容器。  
     前者创建了List接口的对象,实际上是ArrayList类的实例。
     后者创建了List接口的对象,该对象的所有内部成员元素都是Integer类型的。(与之相比较的是前者的所有成员元素都是Object类型的。)

  二、判断是否为空
    list.isEmpty();
      这是判断容器是否为空,返回值是boolean类型,如果是true就表示容器是空的(没有成员元素),否则表示不为空(即已有至少一个成员元素)。  

  三、计算容器大小
     int size = list.size();  
     这是返回容器的大小,即容器内成员元素的个数,返回值是整数类型。

  四、添加元素
     boolean success = list.add(obj);
    list.add(2, obj);
     这是向List容器中添加元素,有以下几点值得注意:
     1、添加的元素类型:如果是泛型容器,这个参数obj必须是指定的类型(或其子类,这个类型在创建容器时指定);如果不是,那么这个obj只要是Object类(或其子类)就行。
     2、前者返回值是boolean类型,表示此次添加操作是否成功,后者没有返回值。
     3、前者把新元素添加到List末尾,后者把新元素添加到指定的位置(下标,从0算起),该位置及其之后的元素都向后移动。
     
  五、取其中的元素
     list.get(2);
     输入参数是下标,即第几个元素,从0算起。至于返回值,要看List容器是否泛型,如果是泛型容器,那就返回指定类型的对象,否则返回的是Object类型的对象。

  六、删除元素
     list.remove(2);
    boolean success = list.remove(obj);
  
  前者从List容器中删掉指定下标位置的成员元素,返回值类似五。  
     后者从List容器中删掉obj对象,操作成功返回true。什么情况会不成功呢?容器中没有obj这个对象。

  七、查找
     list.contains(obj);
    list.indexOf(obj);
    前者只看容器中是否存在obj这个对象,有的话返回true,否则返回false。
    后者查找容器中是否存在obj这个对象,有的话返回其下标(整数),否则返回-1。 
 

  八、遍历
     最好的写法是用forEach语法:
     for (Integer a : list){ // 注:Integer是指创建泛型容器时指定的数据类型
     }
     注意:
     1、最好是泛型容器,这种语法还能省掉数据类型转换的麻烦。否则Integer就要换成Object,还是要做数据类型转换。
     2、List容器内的顺序是固定的,所以for循环时,可以看到a是按照list容器的顺序依次遍历的。
    3、这种遍历有一个缺点,就是没有下标,所以需要下标这个值的时候,还是用传统循环遍历好了,遍历语法是:
    for (int i=0; i<list.size(); i++) 
 {
      Integer a = list.get(i);
  
     ……  
    } 
     这样a仍然是遍历时每个成员元素的引用,但是多了一个i是对应的下标。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值