美文网首页
2019-03-23 集合-lis

2019-03-23 集合-lis

作者: 不被动 | 来源:发表于2019-03-23 16:33 被阅读0次

    1.常见的数据结构自定义容器类:

                基于 

                1.1数组

                1.2链表

                1.3队列

                1.4堆栈

                1.5树

     2.ArrayList

            2.1语法特点

                1、内部基于数组实现的一个集合类。查询比较快,添加和删除相对比较慢

                2、猜ArrayList中会有哪些功能(方法): 添加、删除、查询、插入、修改。。。

                3、不是同步的(存在线程安全问题),如何解决:敬请期待... 用Vector

            2.2基本使用

                1三个构造函数

               2增删改查

               3数组和List相互转化

        2.3遍历方式

            1、使用普通的for循环

                ArrayList bag = new ArrayList();

                bag.add("电脑");

                bag.add(200);

                bag.add("鼠标");

                bag.add("小人书");

                bag.add("教材");

                bag.add("牛奶");

                for(int i=0;i<bag.size();i++){

                    System.out.println(bag.get(i));

                }

            2、增强for循环(foreach)

        语法:

        for(源中的数据类型 变量名 : 源){

        }

        注意:源可以是数组或者集合(Iterable的实例)

            3、使用迭代器进行遍历

                Iterator  就是一个迭代器(也是一个接口)

                    其中的方法如下:

                            boolean hasNext() 判断是否有下一个元素,如果返回true表示有下一个;

                            Object next() 调用一次获得一个元素(每调用一次指针会向后移动一个);

                            void remove() 会从迭代器指向的结合容器中删除一个元素

                    代码:

                ArrayList bag = new ArrayList();

                bag.add("电脑");

                bag.add(200);

                bag.add("鼠标");

                bag.add("小人书");

                bag.add("教材");

                bag.add("牛奶");

                //使用迭代器遍历集合ArrayList   bag

                // 获得一个迭代器

                Iterator it = bag.iterator();

                while(it.hasNext()){

                    System.out.println(it.next());

                }

结果:只遍历了一次,为什么?

原因:上面两个while使用的是同一个迭代器,第一个while循环完毕就把指针移动到末尾了,所以第二个while不会执行了

4、双向迭代器

Iterator  单向的迭代器接口,从左到右依次获得数据,判断是否有下一个;获得下一个

   |-- ListIterator   双向的迭代器接口,它的主要方法如下:

  Iterator中有的它也有;

                         boolean hasPrevious() 判断是否有上一个;

     Object  previous() 获得上一个元素;

代码清单:

ArrayList bag = new ArrayList();

bag.add("电脑");

bag.add(200);

bag.add("鼠标");

bag.add("小人书");

bag.add("教材");

bag.add("牛奶");

// 获得双向的迭代器

ListIterator iterator = bag.listIterator();

while(iterator.hasNext()){

    System.out.println(iterator.next());

}

System.out.println("------------------------------------------");

while(iterator.hasPrevious()){

    System.out.println(iterator.previous());

}

     3.LinkedList

            4.1语法特点

                1、 内部是基于双向链表结构实现的。添加和删除比较快,查询相对ArrayList比较慢

                2、 内部相对于ArrayList而言多了一些操作头和尾的方法

                3、 可以充当队列,堆栈

                4、 不是线程安全的(同步的)

                    总结:LinkedList底层是基于双向链表容器类,添加和删除比较快。查找和修改较慢。

相关文章

  • 2019-03-23 集合-lis

    1.常见的数据结构自定义容器类: 基于 1.1数组 1.2链表 1.3队列 1.4堆栈 1.5树 2.Array...

  • Java高并发系列——检视阅读(七)

    Java高并发系列——集合 JUC中常见的集合 JUC集合框架图 图可以看到,JUC的集合框架也是从Map、Lis...

  • set, loc, iloc, ix的区别

    set, loc, iloc, ix Set 生成集合 Set.union() 生成不重复集合(自动去重) Lis...

  • java集合相关学习

    java集合框架解读 Java集合框架继承Collection和map两个接口,Collection的子类有Lis...

  • Java学习笔记4

    集合 Java的集合大致可以分成Set List 和 Map三种体系结构。其中Set代表无序不可重复的集合;Lis...

  • 集合----List接口

    List接口是collection的子接口,List定义的集合容器拥有下标,可以根据下表来操作集合中的元素。Lis...

  • iOS常用第三方库(最新)

    iOS必须要知道这些,否则。。。 总览/大集合 vsouza/awesome-ios (A curated lis...

  • Java 集合 — ArrayList 分析

    List 集合的特征: 有序 可以重复 可以随机访问(使用下标 添加,删除,访问) ArrayList 是 Lis...

  • 深入学习List集合

    Java List 是一个有序集合。Java List 是扩展 Collection 接口的接口。Java Lis...

  • python 中的函数式编程

    高阶函数 map/reduce python 里面内建了map()和reduce()函数:现在知道有一个集合lis...

网友评论

      本文标题:2019-03-23 集合-lis

      本文链接:https://www.haomeiwen.com/subject/armsvqtx.html