java 集合总结

 

1.集合的种类有:Connection和Map两种。

    1.1 Connection下面又划分为:List,queue,Set三种。其中List下面包含ArrayList;Set下面包含HashSet,SortedSet;queue下面包含LinkedList.。

   1.2  Map下面划分为:HashTable,HashMap,SortedMap三种。

   常用的就是ArrayList,LinkedList,HashSet,LinkedHashSet,TreeSet,HashMap,LinkedHashMap,TreeMap; 

如下图所示:

éåä½ç³»å¾

1.3  数组与集合的区别

          1)  数值可以存储基本数据类型(存储基本数据类型的值)或者是引用数据类型(存储引用数据类型的地址),集合存储的是引用数据类型如果需要存储基本数据类型的话需要进行装箱。

          2) 数组在创建时指定了数据类型,而集合在没有使用泛型修饰的情况下是引用数据类型(object类型)也就是可以存储任意类型的数据。

          3)  数组长度是固定的,不能自动增长,集合的长度是根据元素来决定的。

1.4  集合总结

       List(有序,可重复)
            ArrayList
                底层数据结构是数组,查询快,增删慢
                线程不安全,效率高
            Vector
                底层数据结构是数组,查询快,增删慢
                线程安全,效率低
            LinkedList
                底层数据结构是链表,查询慢,增删快
                线程不安全,效率高
        Set(无序,唯一)
            HashSet
                底层数据结构是哈希表。
                哈希表依赖两个方法:hashCode()和equals()
                执行顺序:
                    首先判断hashCode()值是否相同
                        是:继续执行equals(),看其返回值
                            是true:说明元素重复,不添加
                            是false:就直接添加到集合
                        否:就直接添加到集合
                最终:
                    自动生成hashCode()和equals()即可
                    
                LinkedHashSet
                    底层数据结构由链表和哈希表组成。
                    由链表保证元素有序,哈希表保证元素唯一。

                    TreeSet

                        底层数据机构是红黑树,使用自然排序和比较器排序的方式对元素排序。通过比较返回值是否为0,决定元素的唯一性。

Collection的常用功能
A:添加功能
boolean add(Object obj):添加一个元素
boolean addAll(Collection c):添加一个集合的元素
B:删除功能
void clear():移除所有元素
boolean removeAll(Collection c):只要有一个元素被移除,就返回true
boolean remove(object o):移除一个元素
C:判断功能
boolean contains(object o):判断集合中是否包含指定元素
boolean containsAll(Collection c):只有包含所有元素,才返回true
boolean isEmpty():判断集合是够为空
D:获取功能
Iterator<E> iterator()
E:长度功能
int size():返回元素的个数
F:交集功能
boolean retainAll(Collection c):交集功能
交集功能解释:
有两个集合A、B,A对B做交集,结果保存在A中,B不变,返回值表示A的元素时候发生变化

List集合的特有功能
A:添加功能
void add(int index,Object element):在指定位置添加元素
B:获取功能
Object get(int index):获取指定位置的元素
C:列表迭代器
ListIterator listIterator():
D:删除功能
Object remove(int index):根据索引删除元素,返回被删除的元素
E:修改功能
Object set(int index,Object element):根据索引修改元素,返回被修改的元素

Vector集合的特有功能
A:添加功能
public void addElement(Object obj): 添加功能(add())
B:获取功能
public Object elementAt(int index): 获取元素(get())
public Enumeration elements():  迭代器(Iterator iterator())
boolean hasMoreElements(): ( hasNext() )
Object nextElement(): ( next() )


LinkedList集合的特有功能 
A:添加功能
void addFirst(E e):将指定元素插入此列表的开头
void addLast(E e):将指定元素添加到此列表的结尾
B:删除功能
E removeFirst():移除并返回此列表的第一个元素
E removeLast():移除并返回此列表的最后一个元素
C:获取功能
E getFirst():返回此列表的第一个元素
E getLast():返回此列表的最后一个元素


Map接口的常见功能 
A:添加功能
V put(K key,V value):添加元素
B:删除功能
void clear():移除所有的键值对元素
V remove(Object key):根据键删除键值对元素
C:判断功能
boolean containsKey(Object key):判断集合是否包含指定的键
boolean containsValue(Object value):判断集合是否包含指定的值
boolean isEmpty():判断集合是否为空
D:获取功能
Set<Map.Entry<K,V>> entrySet():返回价值对的Set集合
V get(Object key):根据键获取值
Set<K> keySet():获取集合中所有键的集合
Collection<V> values():获取集合中所有值的集合
E:长度功能
int size():返回集合中键值对的对数

Collections类的常用方法
public static <T> void sort(List<T> list):根据元素的自然顺序 对指定列表按升序进行排序
public static <T> int binarySearch(List<?> list,T key):使用二分搜索法搜索指定列表,以获得指定对象
public static <T> T max(Collection<?> coll):根据元素的自然顺序,返回给定 collection 的最大元素。
public static void reverse(List<?> list):反转指定列表中元素的顺序
public static void shuffle(List<?> list):使用默认随机源对指定列表进行置换

使用时应该选择哪种集合?
是否唯一?
|--是 Set
是否排序?
|--是 TreeSet
|--否 HashSet
建议:知道使用Set,但不知道使用哪个,就用HashSet。 
|--否 List
是否安全?
|--是 Vector
|--否 ArrayList或者LinkedList
查询多:ArrayList
增删多:LinkedList
建议:知道使用List,但不知道使用哪个,就用ArrayList。
建议:知道使用集合,但不知道使用哪个,就用ArrayList。

1.5  Connection和Connections的区别

        java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。 
Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。 
Collection(List、LinkedList 、ArrayList 、Vector 、Stack 、Set )
java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架 
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值