集合

|-------Collection接口:单列集合,用来存储一个一个的对象。

    |-----List接口:存储有序的,可重复的数据

                |-----ArrayList、LinkedList(链表结构)、Vector(几乎不使用)

          |-----Set接口:存储无序的,不可重复的数据

     |-----HashSet:主要实现类,线程不安全的,可以存储null值。

                         |-----LinkedHashSet:作为HashSet子类,使得遍历其内部数据时,可以按照添加的顺序去遍历

     |-----TreeSet:底层使用二叉树(红黑树)存储,可以按照添加对象的指定属性进行排序 

|--------Map:双列集合,用来存储一对(key--value)一对的数据

           |----HashMap、LinkedHashMap、TreeMap、HashTable、Properties

 

 

 

 

List常用方法

void add(int index,Object ele):在index位置插入ele元素
boolean addAll(int index,Collection eles):从index位置开始将eles中的所有元素添加进来
Object get(int index):获取指定index位置的元素
int indexOf(Object obj):返回obj在集合中首次出现的位置,匹配不到返回-1
int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
Object remove(int index):移除指定index位置的元素,并返回此元素
Object set(int index,Object ele):设置指定index位置的元素为ele
List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合

  

HashSet

1.无序性:不等于随机性,存储的数据在底层数组中并非按照数组索引的顺序添加,而是根据数据的哈希值决定的。

2.不可重复性:保证添加的元素按照equals()判断时,不能返回true,相同的元素只能添加一个

在Set中添加的数据,其所在的类一定要重写hashCode()和equals(),重写hashCode()和equals()

 

Map

|--------Map:双列集合,用来存储一对(key--value)一对的数据

           |----HashMap:Map的主要实现类,线程不安全的,效率高;可以存储null的key和value。

                |----LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素

           |----TreeMap:保证按照添加的key--value对进行排序,实现排序遍历。此时考虑key自然排序和定制排序,底层使用红黑树

           |----HashTable:线程安全的,效率低;不可以存储null的key和value。(很少使用)

                 |----Properties:常用来处理配置文件,key和value都是String类型

Map中的key:无序的,不可重复的,使用Set存储所有的key,key所在的类要重写equals()和hashCode()(以hashMap为例)

Map中的value:无序的,可重复的 ,使用Collection存储所有的value,value所在的类要重写equals()

一个键值对:key-value构成一个Entry对象

Map中的Entry:无序的,不可重复的,使用Set存储所有的Entry

 

Map接口常用方法

 遍历方式一:

@Test
    public void test2(){
        Map map = new HashMap();
        map.put("a",111);
        map.put("b",222);
        map.put("c",333);
        map.put("d",444);
        map.put("e",555);
        map.put("f",666);

        Set set = map.entrySet();
        Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            Map.Entry entry = (Map.Entry) iterator.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }

 

 方式二:

@Test
    public void test2(){
        Map map = new HashMap();
        map.put("a",111);
        map.put("b",222);
        map.put("c",333);
        map.put("d",444);
        map.put("e",555);
        map.put("f",666);

        Set keySet = map.keySet();
        Iterator iterator = keySet.iterator();
        while (iterator.hasNext()){
            Object key = iterator.next();
            System.out.println(map.get(key));
        }
    }

  

  

 

posted @ 2022-08-22 20:46  Mr_sven  阅读(15)  评论(0编辑  收藏  举报