List集合

List集合代表一个有序的集合,每个元素都有对用的顺序索引。允许使用重复元素,可以通过索引来访问指定位置的集合元素。

List一些常规的方法

    public static void main(String[] args) {
        List cc = new ArrayList();
        cc.add("我i你");
        cc.add("22");
        cc.add("33");
        System.out.println(cc);
        cc.add(1,"插入");
        System.out.println(cc);
        for (int i = 0;i<cc.size();i++)
        {
//      特有遍历方式
            System.out.println(cc.get(i));
        }
//      删除第三个元素
        cc.remove(2);
        System.out.println(cc);
//      返回指定元素的索引值
//      判断标准时equals返回true
        System.out.println(cc.indexOf(new String("插入")));
//      替换元素
        cc.set(1,new String("替换"));
        System.out.println(cc);
//      截取子集
        System.out.println(cc.subList(1,2));
    }
}

结果:
		[我i你, 22, 33]
		[我i你, 插入, 22, 33]
		我i你
		插入
		22
		33
		[我i你, 插入, 33]
		1
		[我i你, 替换, 33]
		[替换]

当程序试图删除一个对象O时,会调用equals与集合元素进行对比,返回true就会删除该元素,所以当我们把equals默认为true时,每执行一次删除都会删除第一个元素

class O{
    public boolean equals(Object obj)
    {
        return true;
    }
}

public class A3 {
    public static void main(String[] args) {
        List books = new ArrayList();
        books.add("第一");
        books.add("第二");
        books.add("第三");
        System.out.println(books);
        books.remove(new O());
        System.out.println(books);
        books.remove(new O());
        System.out.println(books);
    }
}
[第一, 第二, 第三]
[第二, 第三]
[第三]  

迭代器 (iterator接口)

   public static void main(String[] args) {
        String[] books = {"第一","第二"};
        List bookList = new ArrayList();
        for (int i = 0;i<books.length;i++)
        {
            bookList.add(books[i]);
        }
        ListIterator lit = bookList.listIterator();
        while (lit.hasNext())
        {
            System.out.println(lit.next());
            lit.add("---------------------");

        }
        System.out.println("=========迭代=======");
        while (lit.hasPrevious())
        {
            System.out.println(lit.previous());
        }

    }
第一
第二
=========迭代=======
---------------------
第二
---------------------
第一

Arraylist和Vector

  • Vector是个古老的集合,附带一些古老方法而且缺点很多,不建议使用
  • 两个集合都有一个capacity属性。默认自动增长,可以自行设置从而提高性能
  • ArrayList线程不安全,超过一条线程就必须手动保持集合的同步性,Vector不需要保证 ,但是性能ArrayList好很多
  • 即使需要保证线程安全,还是推荐使用ArrayList,Collections工具类可以保证线程安全.

固定长度的List

 public static void main(String[] args) {
        List fixedList = Arrays.asList("第一","第二");
        //获取fixedList的实现类, 输出
        System.out.println(fixedList.getClass());
        //遍历
        for (int i =0;i<fixedList.size();i++)
        {
            System.out.println(fixedList.get(i));
        }
        
    }
    结果:
	    class java.util.Arrays$ArrayList
		第一
		第二

此工具类不能添加删除等修改长度的操作,可以执行遍历、修改等操作。

总结

  • 需要遍历List集合时,对于ArrayList、Vector集合,应使用随机访问get方法,性能更优,对于LinkedList,应使用迭代器(Iterator)来遍历。
  • 如需经常插入、删除等操作的,应使用LinkedList集合。
  • 如有多线程同时访问,应考虑使用Vector
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值