`
吴英贵
  • 浏览: 7383 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java集合框架知识

 
阅读更多

java是面向对象的一门编程语言,我们可以通过声明类来概括某种含有相同状态或行为的对象,状态对应于类中的属性,行为即为方法。

通常,程序总是在运行时才创建新对象,赋予对象指定的行为和状态,在此之前,我们不知道对象的数量,甚至不知道确切的类型。

那么如何随时随地创建任意数量的对象呢,java类库提供了一套完整的容器类/集合类来解决这个问题

由上图可以看出

1.Collection接口有三个子接口,List、Set和Quene,Map不是

2.Collection是所有序列容器的共性的根接口。Java.util.AbstractCollection类提供了Collection的默认实
现,使得你可以创建AbstractCollection的子类型,而没有不必要的代码重复。

3.Map是所有键值对的根接口

4.List是有序的集合,元素可重复;

Set无序,元素不重复

Quene是队列,按照先进先出原则(FIFO)存储数据

Map按照key-value键值对存储数据,key不能有重复的,put(key,value)方法指定key对应的value值

Hash表示内部存储采用hash算法

Link表示底层采用链式结构存储

Tree表示按照树形结构进行存储

Sort表示升序排列

用法

下面给出集合类的使用

1.实现set接口的类

Set如何判断元素是否重复

HashSet、LinkedHashSet、TreeSet,Set的实现累判断元素是否重复的方法差异很大,

大致可以分为三种,使用equals,使用hashcode,使用compareTo

1)HashSet依靠HashMap实现,类的对象作为HashSet的元素时,该类要重写父类的hashCode方法

2)TreeSet是依靠TreeMap实现的,类的对象作为TreeSet的元素时,该类要实现Comparable接口

2.HashSet和TreeSet的比较

HashSet是基于Hash算法实现的,其性能通常优于TreeSet,应用较TreeSet也普遍,当我们需要排序的

功能时,才使用TreeSet

3.实现List接口的类

ArrayList

可以将ArrayList看作是能够自动增长容量的数组

数组和集合类之间的转换

1)利用ArrayList的toArray()返回一个数组

Object[] objs = al.toArray();

2)Arrays.asList()返回一个列表

List l = Arrays.asList(数组名);

迭代器(Iterator)给我们提供了一种通用的方式来访问集合中的元素

1)每个集合类接口及其实现类都有一个iterator()方法,用来返回对应的Iterator方法

Iterator it = al.iterator();//ArrayList的迭代器,利用它来访问集合中的元素

2)Iterator的方法

hasNext()//是否含有一个元素

next()//返回下一个元素

remove()//删除next方法返回的元素

LinkedList

LinkedList是采用双向循环链式实现的,因为Linkedlist同时实现了List接口和Queue接口,所以可以用LinkedList实现

单向链表、双向循环链表、栈、队列等数据结构,需要注意的是在操作元素(添加、删除、访问)的时候按照对应数据

结构的方法进行操作。

descendingIterator()方法返回以逆向顺序在此双端队列的元素上进行迭代的迭代器,可以通过该方法逆向访问元素

实现Queue接口的类
LinkedList、PrioirtyQueue

实现Map接口的类
HashMap、LinkedHashMap、TreeMap

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics