List接口中的常用方法

说明:
List是Collection的子接口,所以Collection中定义的那些方法List都能用
又因为List中的元素是有序的,所以List增加了有关索引的方法,这是Collection当中没有的,因为Collection还要兼顾Set,Set中又没有索引。

注意:ArrayList是典型的数组替换结构,凡是以前用数组的地方,全部可以替换成ArrayList,包括项目当中
索引和数组中的规定一样,因为底层就是用数组实现的,仍然从0开始
常用方法:
1)void add(int index, Object ele):在index位置插入ele元素
2)boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
3)Object get(int index):获取指定index位置的元素
4)int indexOf(Object obj):返回obj在集合中首次出现的位置 ,如果没有就返回-1
5)int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置 ,如果没有就返回-1
6)Object remove(int index):移除指定index位置的元素,并返回此元素
注意:Collection中的remove是删除某个元素,这里是方法的重载而不是方法的重写 ,因为方法名一样,但形参类型不一样,在List中也可以按照对象去删除
7)Object set(int index, Object ele):设置指定index位置的元素为ele
8)List subList(int fromIndex, int toIndex):返回从[fromIndex到toIndex )位置的子集合,本身的list没有变化

public class Test{
	public static void main(String[] args) {
		ArrayList list=new ArrayList();
		list.add(123);
		list.add(456);
		list.add("AA");
		list.add(new Person("Tom",12));
		list.add(456);
		
		System.out.println(list);//[123, 456, AA, Person [name=Tom, age=12], 456]
		
		//void add(int index, Object ele)
		list.add(1, "BB");
		System.out.println(list);//[123, BB, 456, AA, Person [name=Tom, age=12], 456]
		
		//boolean addAll(int index, Collection eles)
		List list1=Arrays.asList(1,2,3);
		list.addAll(list1);
		//list.add(list1);//不会报错,是把list1整体当做一个元素,此时如果调用size方法结果为7
		//System.out.println(list);//[123, BB, 456, AA, Person [name=Tom, age=12], 456, [1, 2, 3]]
		System.out.println(list);//[123, BB, 456, AA, Person [name=Tom, age=12], 456, 1, 2, 3]
		System.out.println(list.size());//9
		
		
		int index=list.indexOf("AA");
		System.out.println(index);//3
		
		Object obj=list.remove(0);
		System.out.println(obj);//123
	}
}
class Person{
	private String name;
	private int age;
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + "]";
	}
	
	
}

List遍历的方式
1)Iterator迭代器方式
2)增强for循环
3)普通的循环也可以,因为有索引

        ArrayList list=new ArrayList();
		list.add(123);
		list.add(456);
		list.add("AA");
		
		//方式一
		Iterator iterator=list.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
		
		//方式二
		for(Object obj:list) {
			System.out.println(obj);
		}
		
		//方式三
		for(int i=0;i<list.size();i++) {
			System.out.println(list.get(i));
		}

remove的一个问题:

public class Test{
	public static void main(String[] args) {
		
		List list=new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		updateList(list);
		System.out.println(list);//[1, 2]
		
		
	}
	public static void updateList(List list) {
		list.remove(2);
	}
}
public class Test{
	public static void main(String[] args) {
		
		List list=new ArrayList();
		list.add(1);
		list.add(2);
		list.add(3);
		updateList(list);
		System.out.println(list);//[1, 3]
		
		
	}
	public static void updateList(List list) {
		list.remove(new Integer(2));
	}
}

第一种情况下调用的是List中的remove方法,第二种情况下调用的是Collection中的remove方法,
add(1),会进行自动装箱操作,所以第一种情况下是删掉索引值为2的元素,remove(2)中的2不会进行自动装箱,因为有一种remove方法的参数就是int类型,不会去进行自动装箱,所以这里的2是指索引值,第二种情况下就是包装类,就是删除指定的元素

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值