List接口——ArrayList(Array)

List 接口—— ArrayList Array

作者: zccst

 

1.    Arrays

java.util.Arrays 类定义了多种数组操作方法,实现了对数组元素的排序、填充、转换为列表或字符串形式、增强的检索和深度比较等功能。常用 static 方法如下:

public static List asList(Object O);                // 返回数组的列表( List )形式。

public static void sort(< 类型 >[] a);               // 排序

public static void fill(int[] a,int val)               // a 数组所有元素值都赋值为 val

public static int binarySearch(int[], int key);        // 在排好序的 Arrays 中二分查找元素。

public static StringtoString(int[] a);               // 将一个数组转换成一个字符串

1 Array 是数组, Arrays 是数组类。

2 Arrays.asList () 返回的是 List, 而且是一个定长的 List ,所以不能转换为 ArrayList ,只能转换为 AbstractList 。原因在于 asList () 方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上。 所以不支持 remove,add 方法。

 

例如: TestArrays.java

import java.util.List;

import java.util.Arrays;

public class TestArrays {

    public static void main(String args[])

    {

       Integer [] a = {3, 25, 12, 79, 48};

       System. out .println(a);

       System. out .println(Arrays.toString (a));

       Arrays.sort (a);

       System. out .println(Arrays.toString (a));

       int idx = Arrays.binarySearch (a, 25);

       System. out .println(idx);

       List list = Arrays.asList (3, 4, 5);

       System. out .println(list);

       list.set(2, 66) ;

System. out .println(list);

       System. out .println(Arrays.toString (a));

    }

}

输出结果:

[Ljava.lang.Integer;@de6ced

[3, 25, 12, 79, 48]

[3, 12, 25, 48, 79]

2

[3, 4, 5]

[3, 4, 66]

[3, 12, 25, 48, 79]

 

2.    接口实现类 ArrayList

java.util.ArrayList 类实现了 List 接口,用于表述长度可变的数组列表。

ArrayList 类的创始长度为 0 ,和 Array 相比, ArrayList 有以下优点:

1,  可以自动更改数组的长度

2,  可以灵活地插入和删掉元素

3,  ArrayList 类中的一些方法很方便快捷

缺点是:和其他数组比起来,速度上差了些

ArrayList 列表允许取值为 null 。除实现了 List 接口定义的所有功能外,还提供了一些方法来操作列表容器的大小,常用方法如下:

public ArrayList();

public ArrayList(int initialCapacity);

public void ensureCapacity(int minCapacity);

public void trimToSize();

 

例如: TestArrayList.java

import java.util.Date;

import java.util.ArrayList;

public class TestArrayList{

         public static void main(String[] args) {

                   ArrayList h = new ArrayList();

                   h.add("1st");

                   h.add("2nd");

                   h.add(new Integer(3));

                   h.add(new Double(4.0));

                   h.add("2nd");      // 重复元素 , 加入

                   h.add(new Integer(3)); // 重复元素 , 加入

                   System.out.println(h);              

                   System.out.println("size=" + h.size());

                   System.out.println("----- 替换指定元素 -----");        

                   h.set(3,"replace");          

                   System.out.println("-----for 循环遍历 -----");

                   for(int i=0;i<h.size();i++){

                            System.out.println(h.get(i));

                   }                

                   System.out.println("----- 取用特定元素 -----");                 

                   Integer it = (Integer)h.get(2);

                   System.out.println(it.intValue());

                   System.out.println("----- 插入元素 -----");                 

                   h.add(3,new Date());

                   System.out.println("----- 转换为数组 -----");   

                   Object[] os = h.toArray();

                   for(Object o : os){

                            System.out.println(o);    

                   }                

         }

}

输出结果:

[1st, 2nd, 3, 4.0, 2nd, 3]

size=6

----- 替换指定元素 -----

-----for 循环遍历 -----

1st

2nd

3

replace

2nd

3

----- 取用特定元素 -----

3

----- 插入元素 -----

----- 转换为数组 -----

1st

2nd

3

Sun Dec 27 09:18:34 CST 2009

replace

2nd

3

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值