• java集合


    一、集合和数组

    数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。
    1、数组能存放基本数据类型和对象,而集合类存放的是对象,不能存放基本数据类型。数组和集合存放的对象皆为对象的引用地址。
    2、数组容易固定无法动态改变,集合类的容量是可以动态改变的。
    3、数组无法判断其中实际存有多少元素,length只显示数组的容量,而集合的size()可以确切的知道元素的个数。
    4、数组仅采用顺序表方式,集合可以有多种实现方式和不同适用场合。
    5、集合以类的形式存在,具有封装、继承、多态等类的特性,就是里面有很多封装了的方法,你直接调用就可以实现各种复杂的操作,大大提高了效率。

    public class testarray {
        public static void main(String[] args){
            String[] myarray = new String[10];
            myarray[0] = "王五";
            myarray[1] = "王一";
            myarray[2] = "王二";
            System.out.println(myarray.length);//输出10
            System.out.println(myarray[4]);//输出null
        }
    }

    二、java集合

    Collection 接口的接口 对象的集合(单列集合) 
    ├——-List 接口:元素按进入先后有序保存,可重复 
    │—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全 
    │—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全 
    │—————-└ Vector 接口实现类 数组, 同步, 线程安全 
    │ ———————-└ Stack 是Vector类的实现类 
    └——-Set 接口: 仅接收一次,不可重复,并做内部排序 
    ├—————-└HashSet 使用hash表(数组)存储元素 
    │————————└ LinkedHashSet 链表维护元素的插入次序 
    └ —————-TreeSet 底层实现为二叉树,元素排好序

    Map 接口 键值对的集合 (双列集合) 
    ├———Hashtable 接口实现类, 同步, 线程安全 
    ├———HashMap 接口实现类 ,没有同步, 线程不安全- 
    │—————–├ LinkedHashMap 双向链表和哈希表实现 
    │—————–└ WeakHashMap 
    ├ ——–TreeMap 红黑树对所有的key进行排序 
    └———IdentifyHashMap

    java集合分为collection和map两个,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。

    1、Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。
    2、除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。

    接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

    实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

    算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

    public class TestArraylist {
        public static void main(String[] args){
            List<String> mylist = new ArrayList<String>();
            mylist.add("王五");
            mylist.add("王一");
            mylist.add("王二");
            System.out.println(mylist.size());//输出3
            System.out.println(mylist.get(2));//输出王二
        }
    }

    collection下面有List、Set、Queue

    List集合:有序列表,允许存放重复的元素
    实现类:

    • ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)扩容按1.5倍
    • LinkedList:双向链表实现,增删快,查询慢 (线程不安全)
    • Vector:数组实现,重量级 (线程安全、使用少)扩容按2倍大小扩容

    Set集合:无序,存储顺序和添加顺序不一样,不允许存放重复的数据

    • Hashset:底层是HashMap实现,哈希表,采用HashCode算法存取,读取、查找性能优(线程不安全)元素值可以为NULL
    • LinkedHashSet:它是HashSet的一个子类,LinkedHashSet也根据HashCode的值来决定元素的存储位置,但同时它还用一个链表来维护元素的插入顺序,插入的时候即要计算hashCode又要维护链表,而遍历的时候只需要按链表来访问元素。
    • TreeSet:实现了SortedSet接口,顾名思义这是一种排序的Set集合,即有序,只允许存入同一类的元素,实现Comparable接口,TreeSet 会调用compareTo方法比较元素大小,然后按升序排序。




    参考:https://www.cnblogs.com/chenglc/p/8073049.html
    参考菜鸟:https://www.runoob.com/java/java-collections.html

  • 相关阅读:
    操作系统:进程间的相互作用(多线程基础)
    一个互联网研发团队的标准配置
    一个电商项目的功能模块梳理2
    一个电商项目的功能模块梳理2
    一个电商项目的功能模块梳理
    一个电商项目的功能模块梳理
    CTO、技术总监、首席架构师的区别
    CTO、技术总监、首席架构师的区别
    论代码稳定
    论代码稳定
  • 原文地址:https://www.cnblogs.com/lhh666/p/11910696.html
Copyright © 2020-2023  润新知