疯狂Java系列之List集合

List集合代表一个有序、可重复的集合,每个元素都有对应顺序的索引。

                                    List继承示意图

List接口新增一些方法,针对它的增加、索引、删除、替换等集合元素的方法。

代码:

 

package List;

import java.util.ArrayList;
import java.util.List;

public class ListTest {

	public static void main(String[] args) {
		List person =new ArrayList();
		person.add(new String("唐三藏"));
		person.add(new String("孙悟空"));
		person.add(new String("猪八戒"));
		person.add(new String("沙悟净"));
		person.add(new String("白龙马"));
		
		System.out.println(person);
		
		person.add(1,new String("白骨精"));//将新字符串对象插入到第二个位置
		for(int i=0;i<person.size();i++)
		{
			System.out.println(person.get(i));
		}
		//删除第三个元素
		person.remove(2);
		System.out.println(person);
		
		//返回元素第一次出现的位置,如果返回1,则在第二位
		System.out.println(person.indexOf(new String("沙悟净")));
		//返回元素最后一次出现的位置,如果返回1,则在第二位
		System.out.println(person.lastIndexOf(new String("沙悟净")));
		
		person.set(4, new String("红孩儿"));//将第5个元素替换成红孩儿
		System.out.println(person);
		
		System.out.println(person.subList(1, 3));//将第2个(包含)到第4个(不包含)截取成子集合
	}

}

结果:

 

总结:例子很简单,基本上对照每一个结果就能知道这些底层方法的作用。


List可以存在重复对象,那么List判断对象重复的标准是什么?

List判断两个对象相等只要通过equals()方法比较返回true就可了。

 


Java8中为list还添加两个默认方法:

replaceAllUnaryOperator operator):根据指定的计算规则重新设置List集合的所有元素;

sortComparator c):根据Comparator参数对list集合的元素排序;

代码:

 

package List;

import java.util.ArrayList;
import java.util.List;

public class Listtest2 {

	public static void main(String[] args) {
		List person=new ArrayList();
		person.add(new String("孙悟空"));
		person.add(new String("唐僧"));		
		person.add(new String("猪八戒净坛使者"));
		person.add(new String("沙悟净罗汉"));
		person.add(new String("白龙马小白龙"));
		System.out.println(person);
		
		//使用目标类型为Comparator的Lambda表达式对List集合排序
		//根据字符串长度排序
		person.sort((o1,o2)->((String)o1).length()-((String)o2).length());
		System.out.println(person);
		
		//使用目标类型为UnaryOperator的lambda表达式来替换集合中所有元素
		//该Lambda表达式控制使用每个字符串的长度作为新的集合元素
		person.replaceAll(ele->((String)ele).length());
		
		System.out.println(person);
		
	}

}

结果:


ArrayList类和vetor类

         作为List两个经典的实现类,支持List接口所有的方法。

        List是一个可以动态扩展的集合,在ArrayList或Vector中元素超出数组长度,通过initialCapacity自动增加。为提高性能,可以使用ensureCapacity(int minCapactiy)方法一次性地增加initialCapacity,这样可以减少分配的次数。

         ArrayList和Vector明显区别是:ArrayList是线程不安全的,当多个线程访问同一个ArrayList集合时,超过一个线程修改ArrayList集合,就必须手动保证该集合的安全性。vector是线程安全的。

固定长度的List

这里有个工具类Arrays,可以把一个数组或指定个数的对象转换成一个List集合,它是Arrays的内部类ArrayList的实例。

Arrays.ArrayList是一个固定长度的List集合,程序只能遍历访问该集合里的元素,不可增加、删除该集合中的元素。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值