zoukankan      html  css  js  c++  java
  • java集合总结

    1.java集合可以分为Collection和Map两大接口

    ①Collection接口:有两个子接口,Set:元素无序,不可重复的集合;List:元素有序,可重复的集合(动态数组 )

    ②Map接口 :具有映射关系“key-value对”的集合。

     

    2.子接口List:ArrayList(主要的实现类)、LinkedList(频繁的增、删操作推荐使用)、Vector(古老的实现类、线程安全的)

    ArrayList常见方法:

    * 1.add():向集合中添加一个元素
    * 2.addAll():将指定集合添加到该集合的末尾
    * 3.size():返回该集合中元素的个数
    * 4.isEmpty():判断该集合是否为空,返回true或false
    * 5.clear():清空当前集合
    * 6.contains():判断该集合当中是否有指定的元素,返回true或false,注意:判断自定义类时需要从写自定义类的equals方法
    * 7.containsAll():判断该集合是否含有指定集合中的所有元素
    * 8.retainAll():删除与指定元素不同的元素
    * 9.remove():删除指定元素,返回true或false
    * 10.removeAll():从此集合中删除指定集合中包含的所有元素。
    * 11.equals():判断两集合中的元素是否完全相同
    * 12.hashCode():将集合中所有元素的哈希值叠加起来
    * 13.toArray():将集合转化成数组类型
    * 14.iterator():返回一个Iterator接口(迭代器)实现类的对象,进而实现集合的遍历

    集合常用遍历方法:for()循环、iterator迭代器、forEach()增强循环

    3.子接口Set:Set中常用的方法都是在Collection下定义的

    * Set:存储的元素是无序的,不可重复,注意:无序性不等于随机性
    * 无序性:指在元素在底层存储的位置是无序的
    * 不可重复性:当添加相同的元素时,后面的不能添加进去,在自定义类中需要重写equals和hashCode方法
    * Set中的元素存储:使用了哈希算法,当向Set中添加对象时,首先调用此对象所在类的hashCode方法,计算此对象的哈希值
    * ,此哈希值决定了该对象在Set中的存储位置。若此位置之前没有对象存储,则添加成功。若此位置已有对象存储,则通过equals
    * 方法来判断两对象是否相同,如果相同,则后面添加的则不能添加成功

    HashSet(主要实现类)

    LinkedHashSet:使用链表来维护了添加元素进集合的顺序,在遍历集合时,是按照添加顺序来遍历的,性能略低于hashSet,但在适用于迭代访问集合所有元素

    TreeSet:

    * 向TreeSet中添加元素必须是同一类型的!
    * 在向TreeSet中添加自定义类的对象时,需要添加Comparable接口
    * ,否则报错:java.lang.ClassCastException: collection.com.Student cannot be cast to java.lang.Comparable
    * 当向TreeSet中添加自定义类的对象时,有两种排序方法:①自然排序 ②定制排序
    * ①定制排序:要求自定义类中实现java.lang.Comparable接口并重写compareTo(Object o)方法,在此方法中可以选择自定义的任意属性来排序
    * 当插入相同排序属性的对象时,后面插入的不会显示,比如new Student("AA",18),new Student("AA",20),后面的不会插入TreeSet中
    * 这与compareTo方法有关,两对象进行比较,一旦返回0,虽然只是两个对象的排序属性相同,但程序会认为这两个对象时相同的,所以后面添加的不能进来
    * 所以需要在compareTo方法中添加多级排序来保证compareTo() hashCode() equals()三者一致

     4.Map:HashMap(Map常用的实现类)、LinkedHashMap(与LinkedHashSet类似)、TreeMap、Hashtable(古老的、线程安全的,基本不用)

    HashMap:

    *HashMap常用方法:
    * 1.put(key,value):向HashMap中添加元素
    * 2.putAll(map t):与Collection中的addAll类似
    * 3.remove(key):按指定的key来删除这个key-value
    * 4.clear():清空HashMap
    * 5.get(key):获取指定的key的value值
    * 6.size():返回集合长度
    * 7.containsKey(key):判断是否包含有有指定的key,返回true或false
    * 8.containsValue(value):判断是否含有指定的value
    * 9.isEmpty():判断集合是否为空

    * 当向HashMap中添加元素时,key是用Set来存放的,所以不可重复,value是用Collection存放的,可重复
    * 一个key-value是一个Entry(条目),Entry是用Set来存放的,也是不可重复分的。
    * 注意:与Set不同的是,当向其中添加相同key的元素时,后面添加的元素会覆盖前面的元素,与Set恰好相反。

    * HsahMap遍历方法
    * 1.Set set = map.keySet(); 遍历key集
    * 2.Collection coll = map.values(); 遍历value集,顺序与上面一致
    * 3.Set set = map.entrySet(); 遍历key-value集

    TreeMap:按照添加进Map中的元素的key的指定属性进行排序,要求:key必须是同一个类型!!

     Hashtable下的Properties:常用来处理属性文件,key与value都是String类型

    5.Collections:Collection与Map的工具类

    * 常用方法:
    * 1.reverse(list):反转List中的元素的顺序
    * 2.shuffle(list):对List中的元素随机排序
    * 3.sort(list):对List中的元素进行升序排序
    * 4.sort(list,Comparator):根据Comparator指定的属性来对List集合进行排序
    * 5.swap(list,i,j):交换List中的第i和第j位元素
    * 6.max(Collection):返回集合中的最大数
    * 7.max(Colleciton,Comparator):由Comparator来指定属性
    * 8.min(Collection):返回集合中的最小数
    * 9.min(Collection,Comparator)
    * 10.copy(list1,list):将后面的集合复制给前面,注意要保证前面集合的长度不小于后面的
    * 11.frequency(Collections,Object):返回指定集合中指定元素的出现次数
    * 12.replaceAll(list,old,new):使用新值来替换指定集合中的所有旧值

    * Collections类提供了多个synchronizedXxx的方法,来将指定的集合包装成线程同步的集合
    * 从而解决多线程并发访问集合时的线程安全问题

  • 相关阅读:
    Spring 定时任务 @Scheduled cron表达式
    github 获取生成 token 的方法
    jQuery 获取当前日期及前一周或者后一周的日期
    jQuery 复选框 checkbox 取值和赋值
    git clone前后端项目之后的配置操作(一定不要忘记)
    springboo的postman后端接口测试流程详解
    Navicat Premium 15 永久破解激活工具及安装教程(亲测可用)
    企业微信的单点登录适配
    git的可视化和命令行操作步骤
    CMD中键入javac显示 javac不是内部或者外部命令
  • 原文地址:https://www.cnblogs.com/Mercury-19/p/9968743.html
Copyright © 2011-2022 走看看