JAVA之数组与集合

1. 数组和集合的区别

        * 区别1 :

        * 数组既可以存储基本数据类型,又可以存储引用数据类型,基本数据类型存储的是值,引用数据类型存储的是地址值

        * 集合只能存储引用数据类型(对象),集合中也可以存储基本数据类型,但是在存储的时候会自动装箱变成包装类对象

        * 区别2:

        * 数组长度是固定的,不能自动增长

        * 集合的长度的是可变的,可以根据元素的增加而增长

2. 数组和集合什么时候用?

        * 1,如果元素个数是固定的推荐用数组

        * 2,如果元素个数不是固定的推荐用集合

 

一: Collection

1. List(存取有序,有索引,可以重复)

        1) ArrayList

          底层是数组实现的,线程不安全,查找和修改快,增和删比较慢

        2) LinkedList

          底层是链表实现的,线程不安全,增和删比较快,查找和修改比较慢

      

2. Set(存取无序,无索引,不可以重复)

        1) HashSet     

            底层是哈希算法实现

            LinkedHashSet( HashSet的子类 )

           底层是链表实现,但是也是可以保证元素唯一,和HashSet原理一样

        2) TreeSet

          底层是二叉树算法实现

          一般在开发的时候不需要对存储的元素排序,所以在开发的时候大多用HashSet,HashSet的效率比较高

List

       ArrayList集合

        常用方法:

        public boolean add(E element):添加元素

        public E get(int index):获取元素

        public int size():获取长度

 

      LinkList集合

        * LinkedList类特有方法:

         *public void add(int index, E element):在指定位置插入指定元素

         *public void addFirst(E element):将指定元素插入到列表开头

         *public E getFirst():获取并返回第一个元素

         *public E removeFirst():删除并返回第一个元素。

 

        3种遍历: for  iterator foreach

 

 Set

        Set接口中的元素无序(存的顺序和取的顺序不一致),保证元素不会重复。

       HashSet集合 

        1.它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。

        2. HashSet保证不重复:

        将自定义类的对象存入HashSet去重复,类中必须重写hashCode()和equals()方法可以使用source自动生成。

       LinkedHashSet集合 

        底层是链表实现的,是set集合中唯一一个能保证怎么存就怎么取的集合对象。

        因为是HashSet的子类,所以也是保证元素唯一的,与HashSet的原理一样。

二:Map接口

Map接口和Collection接口的不同:

1)Map是双列的,Collection是单列的

2)Map的键唯一,Collection的子体系Set是唯一的

3)Map集合的数据结构值针对键有效,跟值无关;Collection集合的数据结构是针对元素有效。

 

Map集合的功能概述

 * a:添加功能

 *          put(K key,V value):添加元素。(返回值类型和value类型保持一致)

 *          如果键是第一次存储,就直接存储元素,返回null

 *          如果键不是第一次存在,就用值把以前的值替换掉,返回以前的值

 * b:删除功能

 *          voidclear():移除所有的键值对元素

 *          remove(Object key):根据键删除键值对元素,并把值返回

 * c:判断功能

 *          boolean    containsKey(Object key):判断集合是否包含指定的键

 *          boolean    containsValue(Object value):判断集合是否包含指定的值

 *          boolean    isEmpty():判断集合是否为空

 * d:获取功能

 *          Collection<V>    values():获取集合中所有值的集合

 *          V    get(Object key):根据键获取值

 *          Set<K>  keySet():获取集合中所有键的集合

 *          Set<Map.Entry<K,V>>entrySet():

 * e:长度功能

 *        int size():返回集合中的键值对的个数

Map

         1)HashMap

           底层是哈希算法,针对键

           LinkedHashMap

           底层是链表,针对键

         2)TreeMap

           底层是二叉树算法,针对键

           开发中用HashMap比较多

       


附图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值