zoukankan      html  css  js  c++  java
  • Java集合

    Java集合分为Collection和Map

    Collection是高度抽象的接口

    Collection提供的方法:

    size()  计算大小

    add() 向集合中添加元素

    addAll()向集合中添加一组集合

    remove()从集合中删除某一个元素

    removeAll()从集合中删除一组元素(去掉交集部分)

    clear()清空集合中的所有元素

    isEmpty()判断集合中是否有元素

    retainAll()求两个集合的交集

    contains()集合中是否包含某个元素

    containsAll()集合中是否包含一组元素

    equals()判断集合是否和某个对象相等

    hashcode()求该集合的hash值

    toArray()将集合转为数组

    toArray<T[] a>()带泛型的数组转换

    iterator()返回集合的迭代器

    1、List:有序,可重复

    每个元素有有其对应的顺序索引

    • ArrayList
    • LinkedList:插入和删除速度快
    • Vector:古老的集合类,线程安全

    Arrays.asList()返回的的List集合既不是ArrayList实例,也不是Vector实例,返回值是一个固定长度的List的集合

    • List集合提供了根据索引来操作集合元素的方法:

    void add(int index,Object ele)

    boolean addAll(int index,Collection eles) 

    int indexOf(Object ele)

    int lastIndexOf(Object ele)

    Object get(int index)

    Object remove(int index)

    Object set(int index,Object ele)

    List subList(int fromIndex,int toIndex) 左闭右开

    • LinkedList新增的方法:

    void addFirst(Object ele)

    void addLast(Object ele)

    Object getFirst()

    Object getLast()

    Object removeFirst()

    Object removeLast()

    2、Set接口:无序,不可重复

    • HashSet:根据计算的hash值决定元素的存放位置,有很好的存取和查找性能

    加入的对象需实现hashCode()和equals()方法,且这两个方法需保持一致

    • LinkedHashSet:是HashSet的子类,使用链表来维护set的次序,这使得元素看起来是顺序保存

    LinkedHashSet的插入性能略低于HashSet,但在迭代访问Set里的全部元素时有很好的性能

    • TreeSet:是SortedSet接口的实现类,可以确保集合处于排序状态

    如果将一个对象加入TreeSet集合中,则必须实现Comparable接口

    只能添加同一类型的对象

    添加元素时,首先按照compareTo方法比较,一旦返回0,则程序认为这两个对象是一样的

    所以,需确保compareTo,hashCode,equals方法三者保持一致

    • 自然排序  调用集合的compareTo方法
    • 定制排序 实现Coparator接口,重写compare方法

     Map与Collection并列存在,用来存放具有映射关系的数据

    key和value可以是任意类型的数据

    Map中的key用set来存放,不允许重复,即同一个Map对象所对应的类,需重写hashCode和equals方法

    HashMap提供的方法:

    添加删除操作:

    Object put(Object key,Object value)

    Object remove(Object key)

    void putAll(Map t)

    void clear()

    元素的查询操作:

    Object get(Object key)

    boolean containsKey(Object key)

    boolean containsValue(Object value)

    int size()

    boolean isEmpty()

    boolean equals(Object obj)

    元视图的操作方法:

    Set keySet()

    Collection values()

    Set entrySet()

    LinkedHashMap:使用链表维护添加进的元素,遍历后的顺序和插入顺序一致

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

    Hashtable:古老的Map实现类,线程安全的,不允许使用null作为key和value

    Properties:Hashtable的子类,通常用来处理属性文件

    存取时建议使用setProperty(String key,String value)和getProperty(String key)

    Collections 操作集合的工具类

    排序操作(都是静态方法):

    reverse(List)

    shuffle(List)

    sort(List)

    sort(List,Comparator)

    swap(List,int i,int j)

    查找、替换:

    Object max(Collection)

    Object max(Collection,Comparator)

    Object min(Collection)

    Object min(Collection,Comparator)

    int frequency(Collection,Object)

    void copy(List dest,List src)

    boolean repalaceAll(List,Objcet oldVal,Object newVal)

  • 相关阅读:
    使用.NET Core在RESTful API中进行路由操作
    基础教程:ASP.NET Core 2.0 MVC筛选器
    Angular 5和ASP.NET Core入门
    net core 使用tagHelper将 enum枚举类型转换为下拉列表select
    教你如何实现微信小程序与.net core应用服务端的无状态身份验证
    解决mssql localdb 中文乱码问题
    datagrid 新增,并行内编辑,提交保存
    合法的json数组字符串,转换json
    jfinal的回滚
    oracle 修改 字段名称
  • 原文地址:https://www.cnblogs.com/keleaiww/p/11064541.html
Copyright © 2011-2022 走看看