zoukankan      html  css  js  c++  java
  • Java笔记--集合

    1、Java集合类可以用于存储数量不等的多个对象,还可以用于保存具有映射关系的关联数组。

    2、Java集合可分为Collection和Map两种体系:

    --Collection:1)Set:元素无序、不可重复的集合;2)List:元素有序,可重复的集合

    --Map:具有映射关系"key/value对"的集合。

    3、Collection接口:

      |----List接口:

        |----ArrayList、LinkedList、Vector

      |----Set接口:

        |----HashSet、LinkedHashSet、TreeSet

       Map接口:

      |----HashMap、LinkedHashMap、TreeMap、HashTable(子类:Properties)

    4、Collection接口中定义的常用方法:

    --add(Object o);//添加对象;

    --addAll(Collection col);//将集合col里面的元素全部添加到当前集合;

    --clear();//清空当前集合;

    --contains(Object o);//判断当前结合是否包含对象o;

    --containsAll(Collection col);//判断当前集合是否包含集合col中的所有对象; 

    --isEmpty();//判断当前集合是否为空;

    --remove(Object o);//移除对象o

    --removeAll(Collection col);//移除当前集合与col公有的对象(求差集);

    --size();//获取当前集合长度(元素个数);

    --retainAll(Collection col);//求当前集合与col的公有的元素,并返回给当前集合(求交集);

    --equals(Collection col);//判断当前集合与集合col中的对象是否全部相等;

    --iterator();//返回当前集合迭代器;

    5、List中相对于Collection新增的方法:

    void add(int index, Object o);//在制定的index位置处添加元素

    boolean addAll(int index, Collection col);//在指定的index位置处添加col中的元素

    Object get(int index);//获取指定index的元素

    int indexOf(Object o);//返回元素o在集合中首次出现的位置,若不存在o则返回-1

    int lastIndexOf(Object o);//返回元素o在集合中最后次出现的位置,若不存在o则返回-1

    Object remove(int index);//删除指定index的元素

    Object set(int index, Object o);//设置指定index的元素为o

    List subList(int fromIndex, int toIndex);//返回当前集合从fromIndex到toIndex的子集合

    6、HashSet添加自定义类型时,要实现其不可重复性,则必须要重写equals()和hashCode()两个方法,只写equals()无法保证。

    --当向Set中添加对象时,首先调用此对象所在类的hashCode()方法,计算此对象的哈希值,此哈希值决定了此对象在Set中的存储位置。若此位置之前没有对象存储,则这个对象直接存储到此位置,若此位置已有对象存储,再通过equals()比较这两个对象是否相同。如果相同,后一个对象无法添加。

    注:若哈希值一样,但是equals()为false,则两个对象存于同一位置,通常不推荐这么使用,需重新设计hashCode()方法。

    7、LinkedHashSet:使用链表维护了添加顺序,当遍历集合时,是按照添加的顺序来遍历的(性能略低于HashSet)。

    8、TreeSet:1)添加的元素必须是同一类型的;

          2)可以按照添加进集合的元素的指定顺序遍历,例如int是从小到大;

          3)有两种排序:自然排序,定制排序

          4)自然排序需实现Comparable接口,定制排序需要实现Comparator接口。

          5)向TreeSet中添加元素时,首先按照compareTo()进行比较,一旦返回0,程序将认为添加的元素与已有元素相同,因而无法添加。

    9、Map接口方法:

    Object put(Object key, Object value);

    Object remove(Object key);

    void putAll(Map map);

    void clear();

    Object get(Object key);

    boolean containsKey(Object key);

    boolean containValue(Object value);

    int size();

    boolean isEmpty();

    boolean equals();

    10、Map遍历:

    1)遍历key集  

    Set set = map.keySet();
    Iterator it = set.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
    }

    2)遍历valus集

    Collection coll = map.values();
    it = coll.iterator();
    while(it.hasNext()){
        System.out.println(it.next());
    }

    3)遍历key-value(entry)集

    方式一,通过遍历keySet来得到value

    Set set = map.keySet();
    Iterator it = set.iterator();
    while(it.hasNext()){
        Object key = it.next();
        Object value = map.get(key);
        System.out.println(key + "--->" + value);
    }

    方式二,直接遍历entry集

    Set set1 = map.entrySet();
    for(Object obj : set1){
        Map.Entry entry = (Map.Entry)obj;
        System.out.println(entry.getKey() + "--->" + entry.getValue());
    }

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

    12、Hashtable是个Map实现类,线程安全,与HashMap不同,它不允许使用null作为key和value,很少使用。

    13、Properties:常用来处理属性文件,键和值都为String类型的。

    public static void main(String[] args) throws FileNotFoundException, IOException {
        Properties pros = new Properties();
        pros.load(new FileInputStream(new File("jdbc.properties")));
            
        String user = pros.getProperty("user");
        System.out.println(user);
            
        String psw = pros.getProperty("psw");
        System.out.println(psw);
    }

     14、Collections是一个操作Set、List和Map等集合的工具类,提供了一系列静态(static)的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制方法。

    常用方法:1)reverse(List);//反转List中的元素

         2)shuffle(List);//对List集合元素进行随机排序

         3)sort(List);//很据元素的自然排序对List进行排序

         4)sort(List, Comparator);//根据定制排序对List进行排序

         5)swap(List, int, int);//将指定List中的两个元素交换

         6)Object max(Collection);//根据元素的自然顺序,返回最大值

         7)Object max(Collection, Comparator);

         8)Object min(Collection);//根据元素的自然顺序,返回最小值

         9)Object min(Collection, Comparator);

         10)int frequency(Collection, Object);//返回指定对象在集合中出现的次数

         11)void copy(List dest, List src);//将src中的元素复制到dest中

         12)boolean replaceAll(List list, Object oldVal, Object newVal);//将指定List中的oldVal替换为newVal

  • 相关阅读:
    jquery插件实现瀑布流
    mysql explain亲测
    html5 audio标签微信部分苹果手机不能自动播放音乐终极解决方案
    mysql主从复制笔记
    mysql主从复制报错解决方案
    php form表单ajax上传图片方法
    Android webView 正确的用法
    【博弈】【HDU】取石子游戏
    Gleb And Pizza CodeForces
    Kirill And The Game CodeForces
  • 原文地址:https://www.cnblogs.com/tengtao93/p/4536807.html
Copyright © 2011-2022 走看看