集合框架:

集合框架:
List接口:
存放的元素是有序的,是可重复的,也可以存放空值。
ArrayList:是Object类对象数组,,元素可以通过下标获得;优点是遍历查询快;缺点是添加和删除慢。
LinkLIst:是链表,优点是:添加和删除快;缺点是查询慢。

public class Stackextends Vector
Stack 类
表示后进先出(LIFO)的对象堆栈。它通过五个操作对类 Vector 进行了扩展 ,允许将向量视为堆栈。它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法、测试堆栈是否为空的 empty 方法、在堆栈中查找项并确定到堆栈顶距离的 search 方法。
stack的构造方法:stack();
Stack的常用方法:
empty() //测试堆栈是否为空
peek()//查看堆栈的顶部对象,但不从堆栈中移除它
pop()//移除堆栈中的顶部的对象,作为此函数的值得返回对象
push(E item) //把项压入堆栈顶部
search(object 0)//返回对象在堆栈中的位置,以1为基数。

public int search(Object o)
返回对象在堆栈中的位置,以 1 为基数。如果对象 o 是堆栈中的一个项,此方法返回距堆栈顶部最近的出现位置到堆栈顶部的距离;堆栈中最顶部项的距离为 1。使用 equals 方法比较 o 与堆栈中的项。
参数:
o - 目标对象。
返回:
对象到堆栈顶部的位置,以 1 为基数;返回值 -1 表示此对象不在堆栈中。

queue :
public interface Queueextends Collection
在处理元素前用于保存元素的 collection。除了基本的 Collection 操作外,队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式:一种抛出异常(操作失败时),另一种返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的;在大多数实现中,插入操作不会失败。
队列通常(但并非一定)以 FIFO(先进先出)的方式排序各个元素。不过优先级队列和 LIFO 队列(或堆栈)例外,前者根据提供的比较器或元素的自然顺序对元素进行排序,后者按 LIFO(后进先出)的方式对元素进行排序。无论使用哪种排序方式,队列的头 都是调用 remove() 或 poll() 所移除的元素。在 FIFO 队列中,所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。
如果可能,offer 方法可插入一个元素,否则返回 false。这与 Collection.add 方法不同,该方法只能通过抛出未经检查的异常使添加元素失败。offer 方法设计用于正常的失败情况,而不是出现异常的情况,例如在容量固定(有界)的队列中。
remove()和poll()方法可移除和返回队列的头。到底从队列中移除哪个元素是队列排序策略的功能,而该策略在各种实现中是不同的。remove() 和 poll() 方法仅在队列为空时其行为有所不同:remove() 方法抛出一个异常,而 poll() 方法则返回 null。
element()和 peek()返回,但不移除队列的头。
Queue 实现通常不允许插入 null 元素,尽管某些实现(如 LinkedList)并不禁止插入 null。即使在允许 null 的实现中,也不应该将 null 插入到 Queue 中,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。
常用方法:
boolean add(E e)
将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 IllegalStateException。
指定者:
接口 Collection 中的 add
参数:
e - 要添加的元素
返回:
true(根据 Collection.add(E) 的规定)
抛出:
IllegalStateException - 如果由于容量的限制此时不能添加该元素
ClassCastException - 如果指定元素的类不允许将其添加到此队列
NullPointerException - 如果指定元素为 null 并且此队列不允许 null 元素
IllegalArgumentException - 如果此元素的某些属性不允许将其添加到此队列

boolean offer(E e)
将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。
参数:
e - 要添加的元素
返回:
如果该元素已添加到此队列,则返回 true;否则返回 false
抛出:
ClassCastException - 如果指定元素的类不允许将其添加到此队列
NullPointerException - 如果指定元素为 null 并且此队列不允许 null 元素
IllegalArgumentException - 如果此元素的某些属性不允许将其添加到此队列

remove()获取并移除此队列的头。此方法与 poll 唯一的不同在于:此队列为空时将抛出一个异常。
返回:队列的头
抛出: NoSuchElementException - 如果此队列为空

poll()获取并移除此队列的头,如果此队列为空,则返回 null。
返回:队列的头,如果此队列为空,则返回 null

element()获取,但是不移除此队列的头。此方法与 peek 唯一的不同在于:此队列为空时将抛出一个异常。
返回:队列的头
抛出: NoSuchElementException - 如果此队列为空。

peek()获取但不移除此队列的头;如果此队列为空,则返回 null。
返回:此队列的头;如果此队列为空,则返回 null。

java.util中Queue的子接口Dequeue:一个线性collection,支持在两端插入和移除元素。

Vector和ArrayList的区别:
Vector线程安全,性能慢;ArrayList线程不安全,性能快;

SET:
public interface Setextends Collection
一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。

int size()
返回 set 中的元素数(其容量)。如果 set 包含多个 Integer.MAX_VALUE 元素,则返回 Integer.MAX_VALUE。
指定者:接口 Collection 中的 size
返回:此 set 中的元素数(其容量)

boolean isEmpty()
如果 set 不包含元素,则返回 true。
指定者:接口 Collection 中的 isEmpty
返回:如果此 set 不包含元素,则返回 true

boolean contains(Object o)
如果 set 包含指定的元素,则返回 true。更确切地讲,当且仅当 set 包含满足 (onull ? enull : o.equals(e)) 的元素 e 时返回 true。
指定者:接口 Collection 中的 contains
参数:o - 要测试此 set 中是否存在的元素
返回:如果此 set 包含指定的元素,则返回 true
抛出:
ClassCastException - 如果指定元素的类型与此 set 不兼容(可选)
NullPointerException - 如果指定的元素为 null 并且此 set 不允许 null 元素(可选)

Iterator iterator()返回在此 set 中的元素上进行迭代的迭代器。返回的元素没有特定的顺序(除非此 set 是某个提供顺序保证的类的实例)。
指定者:接口 Collection 中的 iterator
指定者:接口 Iterable 中的 iterator
返回:在此 set 中的元素上进行迭代的迭代器

Object[] toArray()
返回一个包含 set 中所有元素的数组。如果此 set 对其迭代器返回的元素的顺序作出了某些保证,那么此方法也必须按相同的顺序返回这些元素。 由于此 set 不维护对返回数组的任何引用,因而它是安全的。(换句话说,即使此 set 受到数组的支持,此方法也必须分配一个新的数组)。因此,调用者可以随意修改返回的数组。
指定者:接口 Collection 中的 toArray
返回:包含此 set 中所有元素的数组

boolean add(E e)
如果 set 中尚未存在指定的元素,则添加此元素(可选操作)。更确切地讲,如果此 set 没有包含满足 (enull ? e2null : e.equals(e2)) 的元素 e2,则向该 set 中添加指定的元素 e。如果此 set 已经包含该元素,则该调用不改变此 set 并返回 false。结合构造方法上的限制,这就可以确保 set 永远不包含重复的元素。 上述规定并未暗示 set 必须接受所有元素;set 可以拒绝添加任意特定的元素,包括 null,并抛出异常,这与 Collection.add 规范中所描述的一样。每个 set 实现应该明确地记录对其可能包含元素的所有限制。
指定者:接口 Collection 中的 add
参数:e - 要添加到 set 中的元素
返回:如果 set 尚未包含指定的元素,则返回 true
抛出:
UnsupportedOperationException - 如果此 set 不支持 add 操作
ClassCastException - 如果指定元素的类不允许它添加到此 set
NullPointerException - 如果指定的元素为 null 并且此 set 不允许 null 元素
IllegalArgumentException - 如果指定元素的某些属性不允许它添加到此 set

boolean remove(Object o)
如果 set 中存在指定的元素,则将其移除(可选操作)。更确切地讲,如果此 set 中包含满足 (onull ? enull : o.equals(e)) 的元素 e,则移除它。如果此 set 包含指定的元素(或者此 set 由于调用而发生更改),则返回 true(一旦调用返回,则此 set 不再包含指定的元素)。
指定者:接口 Collection 中的 remove
参数:o - 从 set 中移除的对象(如果存在)
返回:如果此 set 包含指定的对象,则返回 true
抛出:
ClassCastException - 如果指定元素的类型与此 set 不兼容(可选)
NullPointerException - 如果指定的元素为 null,并且此 set 不允许 null 元素(可选)
UnsupportedOperationException - 如果此 set 不支持 remove 操作

boolean equals(Object o)
比较指定对象与此 set 的相等性。如果指定的对象也是一个 set,两个 set 的大小相同,并且指定 set 的所有成员都包含在此 set 中(或者,此 set 的所有成员都包含在指定的 set 中也一样),则返回 true。此定义确保了 equals 方法可在不同的 set 接口实现间正常工作。
指定者:接口 Collection 中的 equals
覆盖:类 Object 中的 equals
参数:o - 要与此 set 进行相等性比较的对象
返回:如果指定的对象等于此 set,则返回 true

void clear()
移除此 set 中的所有元素(可选操作)。此调用返回后该 set 将是空的。
指定者:接口 Collection 中的 clear
抛出: UnsupportedOperationException - 如果此 set 不支持 clear 方法

boolean retainAll(Collection<?> c)
仅保留 set 中那些包含在指定 collection 中的元素(可选操作)。换句话说,移除此 set 中所有未包含在指定 collection 中的元素。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个交集。
指定者:接口 Collection 中的 retainAll
参数:c - 包含要保留到此 set 中的元素的 collection
返回:如果此 set 由于调用而发生更改,则返回 true
抛出:
UnsupportedOperationException - 如果此 set 不支持 retainAll 操作
ClassCastException - 如果此 set 元素的类与指定的 collection 不兼容(可选)
NullPointerException - 如果此 set 包含 null 元素并且指定的 collection 不支持 null 元素(可选),或者指定的 collection 为 null

int hashCode()
返回 set 的哈希码值。一个 set 的哈希码定义为此 set 中所有元素的哈希码和,其中 null 元素的哈希码定义为零。这就确保对于任意两个 set s1 和 s2 而言,s1.equals(s2) 就意味着s1.hashCode()==s2.hashCode(),正如 Object.hashCode() 的常规协定所要求的那样。
指定者:接口 Collection 中的 hashCode
覆盖:类 Object 中的 hashCode
返回:此 set 的哈希码值

实现类:
Set集合的底层是由HashMap实现的;HashSet是Set接口最常用的实现类。HashMap是数组和链表实现的;当我们存储元素到HashSet里面,一定先调用Hashcode();计算出元素需要存储的位置,如果当前的位置没有元素,就将元素赋值进去,否则就调用equals方法比较两个对象是否相等;就不添加此元素;如果不相等,就以链表的形式进行添加;

equals方法相等hashcode 码一定相等;
hashcode码相等,equals方法不一定相等;
TreeSet是 SortedSet接口的实现类:
TreeSet:是有序的Set集合,但是我们必须 自定义排序方式
实现 Comparable接口 或者是 Comparator接口;

Map:接口
Map中有一个Entry内部接口(类似于内部类)起到封装作用。
Map是以键值对儿 形式进行存储的;
key(键)–value(值)
Map接口中常用的方法:
getKey(); 指定元素的键
getValue(); 指定元素的值
setValue();给指定元素赋值(v)赋值

HashMap的常用方法:
map.put(k,v);
map.get(Object key);
keySet(); 返回当前HashMap的所有键值 ;
remove(Object key);当我们根据k删除元素是返回的是V,被删除的值
values();返回当前HashMap集合的所有"值" 的 集合
entrySet();返回的是 HashMap集合中的 key-value的映射关系

Map接口的其他实现类:
TreeMap: 可排序的Map集合; 比较器排序
Hashtable:

Hashtable和HashMap的区别:
Hashtable线程安全:性能不好, 不允许key 和 value都为null
HashMap:线程不安全,性能好 ,允许key 和 value都为null

泛型:数据类型的参数化
1,检查类型
2,类型转换
List<? extends Number>
?是通配符,如上 ?必须是 Object对象的子类
List<? super Integer>
? 必须是 Integer 类型的 父类

猜你喜欢

转载自blog.csdn.net/ranguangrong/article/details/88082847
今日推荐