资讯专栏INFORMATION COLUMN

【全栈之路】JAVA基础课程六_集合(20190615v1.0)

dkzwm / 1393人阅读

摘要:欢迎进入基础课程博客地址本系列文章将主要针对一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。是同步的,而不是。因此,更适合于单线程环境,而适合于多线程环境。

欢迎进入JAVA基础课程

博客地址:https://blog.csdn.net/houjiyu...
本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触JAVA开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。若有问题请及时留言或加QQ:243042162。

寄语:
再走长征路,回顾过往峥嵘岁月,重温重要历史事件,砥砺前行,用脚步丈量新时代的长征路。工作道路上,我们也要弘扬这种长征精神,坚持不懈,一步一个脚印,脚踏实地,朝着自己的目标前行。
集合 1. 集合框架图

(1)缩略版

(2)详细版

2.集合和数组区别

3.Collection接口

List接口:元素按进入先后有序保存,可重复

(1)LinkedList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素
(2) ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素
(3) Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素

Set 接口: 仅接收一次,不可重复,并做内部排序

HashSet 使用hash表(数组)存储元素
LinkedHashSet 链表维护元素的插入次序

TreeSet 底层实现为二叉树,元素排好序

HashSet和TreeSet区别:
(1)Treeset 中的数据是自动排好序的,不允许放入 null 值。
(2)HashSet 中的数据是无序的,可以放入 null,但只能放入一个 null,两者中的值都不能重复,就如数据库中唯一约束。
(3)HashSet 要求放入的对象必须实现 HashCode()方法,放入的对象,是以 hashcode 码作为标识的,而具有相同内容的 String 对象,hashcode 是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例

4.Map

HashMap和HashTable

HashMap 和 Hashtable 都实现了 Map 接口,因此很多特性非常相似。但是,他们有以下不同点:
(1)HashMap 允许键和值是 null,而 Hashtable 不允许键或者值是 null。
(2)Hashtable 是同步的,而 HashMap 不是。因此,HashMap 更适合于单线程环境,而 Hashtable 适合于多线程环境。

TreeMap

5.集合遍历

(1)list遍历

public class CollectionMain {
    public static void main(String[] args) {
        List testList = new ArrayList<>();

        testList.add("1");
        testList.add("2");
        testList.add("3");

        System.out.println("使用Iterator迭代.....");
        Iterator iterator = testList.iterator();
        while (iterator.hasNext()){
            String value = iterator.next();
            System.out.printf("%s ",value);
        }

        //在使用ListIterator迭代时,开始也需要正向迭代,然后在倒序迭代
        System.out.println("

使用ListIterator迭代.....");
        System.out.println("正向遍历.....");
        ListIterator listIterator = testList.listIterator();
        while (listIterator.hasNext()){
            String value = listIterator.next();
            System.out.printf("%s ",value);
        }
        System.out.println("
反向遍历.....");
        while (listIterator.hasPrevious()){
            String value = listIterator.previous();
            System.out.printf("%s ",value);
        }
    }


}

输出结果

使用Iterator迭代.....
1 2 3 

使用ListIterator迭代.....
正向遍历.....
1 2 3 
反向遍历.....
3 2 1 

(2)map遍历

public class MapMain {
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put(5, "a");
        map.put(2, "b");
        map.put(3, "c");
        map.put(4, "d");
        map.put(null, "e");// 和上面相同 , 会自己筛选
        System.out.println(map.size());

        //方式一:通过Map.keySet遍历key和value
        for(Map.Entry entry:map.entrySet()){
            System.out.println("1,key:"+entry.getKey()+",value:"+entry.getValue());
        }

        //方式二:通过Map.entrySet使用iterator遍历key和value
        Iterator> iterator=map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry entry=iterator.next();
            System.out.println("2,key:"+entry.getKey()+",value:"+entry.getValue());
        }

        //方法三:通keyset遍历
        for(Integer key:map.keySet()){
            String v = map.get(key);//得到每个key多对用value的值
            System.out.println("3,key:"+key+",value:"+v);
        }

    }
}

输出结果

5
1,key:null,value:e
1,key:2,value:b
1,key:3,value:c
1,key:4,value:d
1,key:5,value:a
2,key:null,value:e
2,key:2,value:b
2,key:3,value:c
2,key:4,value:d
2,key:5,value:a
3,key:null,value:e
3,key:2,value:b
3,key:3,value:c
3,key:4,value:d
3,key:5,value:a

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77781.html

相关文章

  • 全栈之路JAVA基础课程_集合20190615v1.0

    摘要:欢迎进入基础课程博客地址本系列文章将主要针对一些基础知识点进行讲解,为平时归纳所总结,不管是刚接触开发菜鸟还是业界资深人士,都希望对广大同行带来一些帮助。是同步的,而不是。因此,更适合于单线程环境,而适合于多线程环境。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解,为平时归纳所总...

    tain335 评论0 收藏0
  • 全栈之路JAVA基础课程_多线程和死锁(20190614v1.0

    摘要:一个进程可以有多个线程。线程又叫做轻量级进程。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。不剥夺条件进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放只能是主动释放。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进...

    Allen 评论0 收藏0
  • 全栈之路JAVA基础课程_多线程和死锁(20190614v1.0

    摘要:一个进程可以有多个线程。线程又叫做轻量级进程。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。不剥夺条件进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放只能是主动释放。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进...

    warnerwu 评论0 收藏0
  • 全栈之路JAVA基础课程_AJAX原理剖析(20190617v1.0

    摘要:借鉴图片仅用于学习分享,请尊重原创作者,勿用于商用。这其中最关键的一步就是从服务器获得请求数据。基本步骤创建对象也就是创建一个异步调用对象。创建一个新的请求并指定该请求的方法及验证信息。设置响应请求状态变化的函数。使用和实现局部刷新。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解...

    biaoxiaoduan 评论0 收藏0
  • 全栈之路JAVA基础课程_AJAX原理剖析(20190617v1.0

    摘要:借鉴图片仅用于学习分享,请尊重原创作者,勿用于商用。这其中最关键的一步就是从服务器获得请求数据。基本步骤创建对象也就是创建一个异步调用对象。创建一个新的请求并指定该请求的方法及验证信息。设置响应请求状态变化的函数。使用和实现局部刷新。 欢迎进入JAVA基础课程 博客地址:https://blog.csdn.net/houjiyu...本系列文章将主要针对JAVA一些基础知识点进行讲解...

    yintaolaowanzi 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<