ArrayList常用方法总结

首先了解一下集合

集合又称为容器,可以增加、删除、查找数据,集合有两大分支:Collection接口和Map接口

下面讲一下Collection接口。Collection接口也有两个分支:List和Set.

List下有一个抽象类AbstractList,抽象类下又有两个接口实现类:ArrayList和Vector,Vector下还有一个Stack类,

Set下也有一个抽象类AbstractSet,抽象类下又有两个接口实现类:TreeSet和HashSet,HashSet下也有一个实现类LinkedHashSet,HashSet与LinkedHashSet直接实现了Set接口

现在总结ArrayList常用的方法

1.add():用于向List集合中添加元素,代码如下:

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
	}
}

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

<String>泛型;用于约束集合容器中元素的数据类型,如果省略,则默认为Object

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("Tom");
        list.add(12);
	}
}

也可以ArrayList list = new ArrayList();或ArrayList  list = new ArrayList<String>(); 

2. size()  用于获取集合中有多少个元素,代码如下

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
        ArrayList list = new ArrayList();
        list.add("Tom");
        System.out.println(list.size());//输出1
    }
}

 3.get(int index)  获取指定索引(从0开始)位置的元素,代码如下

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	System.out.println(list.size());//输出1
    	System.out.println(list.get(0));//输出Tom
	}
}

4.clear(),清空List集合中的所有元素,如

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	System.out.println(list.size());//输出1
    	System.out.println(list.get(0));//输出Tom
    	list.clear();
    	System.out.println(list.size());//输出0,进而说明clear用于清空集合中所有元素
    }
}

5.list.isEmpty();判断list集合是否是空集合,如果是,则true,否,则false

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	list.clear();
    	System.out.println(list.size());//输出0,因为清空了集合中所有元素
    	System.out.println(list.isEmpty());//输出true,因为集合是空的
    	list.add("Tom");
    	System.out.println(list.isEmpty());//输出false
    }
}

6.list.remove(int index),删除指定索引(从0开始)位置的元素,并将元素返回,并将后面元素前移

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	list.add("Jim");
    	System.out.println(list.remove(0));//输出删除的对象“Tom”,Jim前移
    	System.out.println(list.get(0));//输出Jim
    }
}

7.list.remove(Object o);删除List集合元素,返回boolean(删除成功,返回true,否则返回false),并将后面元素前移。

(与上面的list.remove(int index)是重载)

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	list.add("Jim");
        //System.out.println(list.remove(0));//输出删除的对象“Tom”,Jim前移
        //System.out.println(list.get(0));//输出Jim
        System.out.println(list.remove("Tom"));//输出true,因为集合中有“Tom”,如果没有Tom,则返回false
        System.out.println(list.get(0));//输出Jim,因为Jim前移了
    }
}

8. list.contains(Object o)用来判断集合容器中是否含有参数元素,如果含有,返回true,否则,false。如:

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	list.add("Jim");
    	System.out.println(list.contains("Jim"));//返回true
    }
}

那么是如何进行判断的呢?分析如下

首先,将鼠标放在contains处,按住ctrl键同时点击contains,就会进入contains源代码处,源码如下

    public boolean contains(Object o) {
        return indexOf(o) >= 0;
    }
    public int indexOf(Object o) {
        if (o == null) {
            for (int i = 0; i < size; i++)
                if (elementData[i]==null)
                    return i;
        } else {
            for (int i = 0; i < size; i++)
                if (o.equals(elementData[i]))
                    return i;
        }
        return -1;
    }

代码分析:将"Jim"传给“o”,Jim是String类,而o是Object类,所以o就变成了一个上转型对象,指向其子类String类,o不等于null,所以执行else部分,然后看o.equals(elementData[i])部分,因为o是Object类,所以表面上是Object类的o调用equals方法(将鼠标放在contains处,按住ctrl键同时点击equals,进入Object类的equals方法),实际上是String类的Jim调用equals方法,即多态。

9.list.add(int index,Object element),在指定位置添加元素,原来位置的元素后置,如

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	list.add("Jim");
    	list.add(0, "Kate");
    	System.out.println(list.get(1));//输出Tom,因为Tom从0后置到了1
    }
}

10.list.set(int index,Object element)    替换指定位置的元素

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList list = new ArrayList();
    	list.add("Tom");
    	list.add("Jim");
    	list.add(0, "Kate");
    	System.out.println(list.get(1));//输出Tom,因为Tom从0后置到了1
    	list.set(0, "Lucy");
    	System.out.println(list.get(0));//输出Lucy,Lucy替换了Kate
    	System.out.println(list.remove("Kate"));//输出false,证明没有了Kate,即Lucy替换了Kate
    }
}

集合遍历

我们知道数组有遍历,其实集合跟数组一样,也有遍历,下面我们就讲一讲集合遍历吧。看下面代码

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList<String> list = new ArrayList<String>();
    	list.add("Tom");
    	list.add("Jim");
    	System.out.println(list.get(0));//会先输出Tom
    	System.out.println(list.get(1));//再输出Jim
    }
}

可以看到,会先输出Tom,再输出Jim,就跟数组中一样,在数组中按照存入数据的先后顺序存储,在集合中也是这样,按照存入数据的先后顺序存储。所以,与数组中遍历一样,写下列代码,按顺序输出Tom和Jim

package blogList;

import java.util.ArrayList;

public class List {
    public static void main(String[] args) {
    	ArrayList<String> list = new ArrayList<String>();
    	list.add("Tom");
    	list.add("Jim");
    	for (int i = 0; i < list.size(); i++) {
    		System.out.println(list.get(i));
    	}
    	System.out.println("~~~~~~~~~~");
    	for (String name : list) {
    		System.out.println(name);
    	}
    }
}

结果:

也可以用下面一个遍历,用到了ArrayList中的又一个方法

11.list.iterator()   用于将List集合中元素转到iterator变量中,代码如下

package blogList;

import java.util.ArrayList;
import java.util.Iterator;

public class List {
    public static void main(String[] args) {
    	ArrayList<String> list = new ArrayList<String>();
    	list.add("Tom");
    	list.add("Jim");
    	Iterator<String> iterator = list.iterator();
    	while(iterator.hasNext()){//最初,“指针”指向首元素上面,iterator.hasNext()判断当前“指针”下面是否还有元素
    		System.out.println(iterator.next());//如果指针下面有元素,则移动指针并获取相应位置
    	}
    }
}

可以看到与for循环结果一样,先输出Tom再输出Jim。类似于C语言中的指针(Java中没有指针)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值