ArrayList常用方法总结

package list;
import java.util.ArrayList;
public class Test {
		public static void main(String[] args) {
				ArrayList list=new ArrayList();
				list.add("Tom");//用于向List集合容器中添加元素
				int len = list.size();//用于获取集合中有多少个元素
				System.out.println(len);
				System.out.println(list.get(0));//获取从零开始指定索引位置的元素
				list.clear();//清空list集合中所有元素
		}
}
package list;
import java.util.ArrayList;
public class Test {
		public static void main(String[] args) {
				ArrayList<String> list = new ArrayList<String>();//<String>叫泛型,可省略,默认是Object
				boolean flag = list.isEmpty();//集合空为true
				System.out.println(flag);
				list.add("one");
				list.add("two");
				String str = list.remove(0);//删掉指定索引元素,返回该元素,后面元素前移
				flag = list.remove("two");//删掉List集合元素,返回Boolean,后面元素前移
				list.add(0, "one");//在指定位置添加元素,原位置元素后置
				System.out.println(list.get(0));//这里会输出one
				flag = list.contains("two");//输出false,判断是否包含某元素
				//思考:此处的判断过程是?
				list.set(0,"three");//替换指定位置元素
		}
}

remove这里有重载,我们查看一下内部代码

    public E remove(int index) {
        rangeCheck(index);
        modCount++;
        E oldValue = elementData(index);
        int numMoved = size - index - 1;
        if (numMoved > 0)
            System.arraycopy(elementData, index+1, elementData, index,numMoved);
        elementData[--size] = null; // clear to let GC do its work
        return oldValue;
    }
    public boolean remove(Object o) {
        if (o == null) {
            for (int index = 0; index < size; index++)
                if (elementData[index] == null) {
                    fastRemove(index);
                    return true;
                }
        } else {
            for (int index = 0; index < size; index++)
                if (o.equals(elementData[index])) {
                    fastRemove(index);
                    return true;
                }
        }
        return false;
    }

思考:其实真正执行的是ArrayList的equals方法,源码如下:

public boolean contains(Object o) {//上转型对象String->Object
        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]))//o是上转型对象,这里调用的不是Object的equals方法而是String的,ArrayList底层是数组写的,这里的实质就是数组的遍历
                    return i;
        }
        return -1;
    }

集合遍历的三种方法

for循环

import java.util.ArrayList;
public class Test {
		public static void main(String[] args) {
				ArrayList<String> list = new ArrayList<String>();
				list.add("one");
				list.add("two");
				for(int i = 0; i<list.size(); i++) {
					System.out.println(list.get(i));
				}
		}
}

foreach加强循环

package list;
import java.util.ArrayList;
public class Test {
		public static void main(String[] args) {
				ArrayList<String> list = new ArrayList<String>();
				list.add("one");
				list.add("two");
				for(String str : list) {
					System.out.println(str);
				}
		}
}

迭代器遍历

package list;
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
		public static void main(String[] args) {
				ArrayList<String> list = new ArrayList<String>();//<String>叫泛型,可省略,默认是Object
				list.add("one");
				list.add("two");
				Iterator iterator = list.iterator();//将list集合中的元素转到iterator变量中
				while(iterator.hasNext()) {//迭代器最开始指向第一个元素前,
					System.out.println(iterator.next());
				}
		}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值