java中关于集合的总结

集合:储存元素的容器。

集合与数组与区别:

①长度区别:数组长度固定,集合长度不固定;

②内容区别:数组存储的是同一类型的元素(Object类型的除外,因为Object类型的数组也可以存储任意类型的数据),集合可存储不同类型的元素;

③元素数据类型问题:数组可以存储基本数据类型,引用类型,集合只能存储引用数据类型。


集合的体系基类是 (根接口) Collection,它的子接口有  List  , Set (着重讲的这两个子接口)。其中List与Set的区别是:List实现的集合是有序的,可重复的,而Set恰好相反,Set实现的集合是无序的、不可重复的。

Collection的功能:主要讲以下几个方法

boolean add (Object obj):添加一个元素

boolean addAll (Collection C):添加一个集合的元素

void clean():移除所有元素

boolean contains(Object  O):判断集合中是否包含指定元素

boolean containsAll(Collection C):判断集合中是否包含指定集合元素(所有的元素)

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

Iterator  <E> iterator():迭代器(相当于数组的遍历)

boolean remove (Object  O):移除一个元素

boolean  removeAll (Collection C):移除一个集合的元素

boolean retainAll(Collection  C ):交集

int  size(  ):元素的个数(相当于数组的长度)

Object [ ]toArray(  ) :把集合转为数组


----------------------------------------------------------------------

List的特有功能:

List的实现类有:ArrayList 、LinkedList  、Vector

subList(int  formIndex , int  toindex):截取(formIndex表示开始截取的位置包含,toIndex表示截取截止不包含 )

void add(  intIndex ,Object  element ):在指定位置添加元素

(注意的是,如果添加的索引值紧跟集合里的最后一个元素的索引值,则添加没错,大于索引值则会报错-- 索引越界)

Object get(  int  index) : 获取指定位置元素

Object remove ( int  index  ):删除指定元素

Object set( int  index , Object  element ):根据索引修改元素,返回被修改的元素

    Set

Set的实现类:treeSet   HashSet

treeSet  :  如果元素具有自然顺序,treeSet就会按照自然顺序来进行排序;如果不具备自然顺序,需要自己提供一个排序法则,如果自己不提供,就会出现异常;

告知排序的方式:

①自定义类,实现Comparator接口,通过接口中的方法,来指定比较的方法;

②让元素的类实现接口Comparable ;

③通过Compare方法来找到重复元素(返回值为0),则不存储;

④底层排序是通过红黑树数据结构来实现(左小右大);

⑤如果两种排序方式都存在,那么treeSet采用Comparator提供的排序方法;

⑥字符的比较方法是:比字符,如果字符都相同,那么就比字符串的长度。

Map

Map的实现类有:HashMap  、TreeMap , Map的存储方式是(Key,value)---(键,值)叫做双列集合。

    MapHash的存储原理:

①在往HashMap中添加元素的时候,会先调用Key的HashCode方法,来获取到一个哈希值;

②经移位运算,也可以算出这个hsahCode在哈希表中的存储位置;

③如果算出来的位置上有元素,那么久调用这个元素的equals方法进行比较,如果返回ture,代表是相同的 Key;如果算出来的位置上没有元素,则直接添加到哈希表中。

TreeMap:基于二叉树数据结构实现元素的排序我们需要注意:

如果具备自然顺序,就按照自然顺序去排列,如果添加到TreeMap中的元素的Key不具备顺序,那么Key所在的类必须实现Comparable接口,把比较的规则定义在 int ComparaTo(Object   obj)这个接口的方法中。





泛型

泛型指的是程序员规定使用的类型。

使用泛型的好处:①将运行时的异常提前到了编译时;②避免了一些无所谓的强制转换。

自定义泛型是一个占位符,在使用的时候我们需要注意的是:

①泛型中不允许使用基本数据类型,基本数据类型实际上是经过了包装后的对象类型;

②名称只要符合标识符规范即可,一般推荐使用大小写。



枚举

①枚举是一个特殊的类;

②枚举值得默认修饰符是public  static  final

  ③枚举值得类型是本类类型;

④枚举的方法是private修饰的,枚举类会自内部构造枚举值;

⑤枚举是可以有成员变量的,但只能通过枚举值去访问枚举类型的实例成员变量;

⑥枚举类构造的枚举值对象,默认是无参构造的,但是可以通过有参构造来构造它们,但这个有参构造必须是 private修饰的;

⑦可以有抽象方法,但注意的是美金值必须要实现抽象的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值