新津李老八の博客之集合(1)

集合

List集合

1.List集合储存元素特点:有序可重复
   有序:List集合中的元素有下标从0开始,以1递增。
   可重复:存储一个1,还可以再存储1
2.List是Collection接口的子接口,有自己的特有方法
以下只列出List接口特有的常用的方法:
    void add(int index, E element)         在列表指定位置插入指定元素
    E set(int index, E element)              修改指定下标的元素
    E get(int index)                                依据下标获取元素
    int indexOf(Object o)                       获取指定对象第一次出现处的索引
    int lastIndexOf(Object o)                 获取指定对象最后一次出现处的索引
    E remove(int index)                        删除指定下标位置元素

public class ListTest01 {
    public static void main(String[] args) {
        //List myList = new LinkedList();
        //List myList = new Vector();
        List myList = new ArrayList();

        //添加元素
        myList.add("A");//默认都是向集合末尾添加元素
        myList.add("B");
        myList.add("C");
        myList.add("D");
        //在列表指定位置插入指定元素(第一个参数是下标)
        //这个方法使用不多,因为对于ArrayList集合来说,效率太低
        myList.add(1,"dzhcool");
        myList.add(0,1111);

        Iterator it = myList.iterator();
        while(it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);//1111 A dzhcool B C D
        }
        //依据下标获取元素
        System.out.println(myList.get(1));//A

        for (int i = 0; i < myList.size(); i++) {
            System.out.println(myList.get(i));//1111 A dzhcool B C D
        }

        //获取指定对象第一次出现处的索引
        System.out.println(myList.indexOf("dzhcool"));//2

        //获取指定对象最后一次出现处的索引
        System.out.println(myList.lastIndexOf("dzhcool"));//2

        //删除指定下标位置元素
        myList.remove(0);
        System.out.println(myList.size());//5

        //修改指定下标位置的元素
        myList.set(1,"李老八");

        for (int i = 0; i < myList.size(); i++) {
            System.out.println(myList.get(i));//A 李老八 B C D
        }

    }
}

ArrayList集合

1.默认初始化容量为10.(底层先创建了一个长度为10的数组,当添加第一个元 素时,初始化容量为10).
2.集合默认是一个Object[]数组.
3.构造方法:new ArrayList(); new ArrayList(20);
4.ArrayList的扩容:原容量的1.5倍
       ArrayList的底层是数组,怎么优化?
             因为ArrayList底层是数组,数组扩容率比较低,尽可能少扩容,应该先预估元素的个数,最后在通过构造方法,给定一个初始化容量.
5.数组的优点:
      检索/查找效率较高:
(1)由于数组中的元素类型一致,所以每个元素占用空间大小是相同的;
(2)内存地址是连续的,知道首元素的地址,知道下标,通过计算就可以求得其他元素的内存地址;
(3)数组中存储100个元素或者存储100万个元素,在元素查询/检索方面,效率是相同的,因为数组中元素查找的时候不会一个一个找,是通过数学表达式计算出来的.(算出一个内存地址,直接定位的)
6.数组的缺点:
     1)随即增删元素效率较低:为了保证数组中每一个元素的内存地址连续,所以在数组上随机删除或者增加元素的时候,效率极低,因为随机增删元素会涉及到后面元素统一向前或者向后位移的操作.(在增删数组最后一个元素的时候,不会有这样的问题,因为不存在向前移,或者向后移动)
     2)数组无法存储大数据量:因为很难在数组中找到一块非常大且连续的一块空间.
7.ArrayList集合是非线程安全的集合.

阅读完上面的文章,你可能会有疑问,Collection是什么?Collection又有什么方法呢?
        请看下回分解(其实就是自己没做好准备就开始写博客,骚瑞,下次好好弄)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值