Java集合框架

一,集合的定义

集合跟数组一样都是一种容器。

集合,1长度可变,2只能存储对象,3可以存储任何类型的对象。

数组,1,长度固定,2只能存储基本类型的数据,3同一数组中只能存储同一种数据。

注意:1,集合和数组中存放的都是对象的引用,而不是对象本身。

          2,接口不能new,只能实现或继承接口。例List  ll=new List();这样就会报错可以将后面的List改为ArrayList就正确了。

                集合中的几个接口Collection,Map,List,Set.

         3 ,在集合进行遍历时,不能再遍历中进行增删改查操作,但是在迭代器中可以。

         4,List可以放重复的null元素,因为null是对象,

        5,ArrayList和hashmap在使用时最好初始化大小,减少内部扩容。因为是数组,所以初始化长度只能是2^n,最小是16,32,

        6,hashmap的k可以存放null,但只能存放一个,因为k不重复。

        7,用接口定义功能,用实现功能,这种技术称为解耦技术(解开耦合),集合正是使用了这种技术。用List等接口定义功能,用ArrayList等实现类实现功能。

二,集合的分类及使用

1,Collection接口通常不能直接使用,但是该接口提供了添加删除管理数据的方法,由于List接口和Set接口都实现了他的方法,因此这些方法对List和Set集合都是通用的。Collection中没有set,get方法,但ArrayList中有。

方法如下:

1

2

3

4

5

add(Element e)                             添加特定对象进集合

remove(Object o)                             移除

isEmpty()-----Boolean                          判断集合是否为空

iterator()------iterator                        返回迭代器用来遍历集合中的对象

size()--------int                                获取集合元素的个数,即获取集合长度

toArray(T[ ] a)                         将集合转化为数组,返回参数指定的类型的数组。

                                   如果无参,返回的是Object类型的数组。

 

注意:Collection的方法addAll,ContainsAll,RemoveAll的方法都是集合。

2, List有序可重复的集合,所以除了继承Collection的方法外,增加了一些根据索引操作集合元素的方法。

  1,set(   int index,   E element)注意这里element是修改后元素的值,但是此方法返回的值是要被修改的值

  2,get(int index)   查找元素,可能下标越界。
  3,indexof(object 0)  在集合寻找对象第一次出现的位置,没有返回-1。

  4,lastindexof(object 0)  在集合寻找对象最后一次出现的位置,没有返回-1。

  5,求子集合 List<E> subList(int fromIndex, int toIndex) // 不包含toIndex

            ArrayList  

               底层数据结构是数组,查询快,增删慢
                线程不安全,效率高
            Vector
                底层数据结构是数组,查询快,增删慢,实现方式与ArrayList相同
                线程安全,效率低
            LinkedList
                底层数据结构是链表,查询慢,增删快(因为只要改变指正所指的地址即可
                线程不安全,效率高

   三者的区别:

      1,初始容量都为10,但ArrayList默认增长为原来的50%,原码采用位运算。而Vector默认增长为原来的一倍,并且可以设置

       2,对于随机访问get和set(查询操作),ArrayList要优于LinkedList,因为LinkedList要移动指针

        3,对于增删操作(addi和remove),LinkedList优于ArrayList

       3,set无序不可重复

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值