您的位置:首页 > 编程语言 > Java开发

java集合之HashSet

2015-11-11 08:13 597 查看
HashSet还有一个子类LinkedHashSet,LinkedHashSet集合也是根据元素hashCode值来决定元素存储位置,但它同时使用链表维护元素的次序。除了实现List接口外,LinkedList类还为列表的开头及结尾get、remove和insert元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列和双端队列。

此类实现Deque接口,为add、poll提供先进先出队列操作,以及其他堆栈和双端队列操作。

void addFirst(E e);

void addLast(E e);

Object clone();返回浅表副本

Iterator<E> descendingIterator() 返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。

E element();获取但不移除此列表的头(第一个元素)

get(int index);返回此列表中指定位置处的元素

getFirst();返回此列表的第一个元素。

getLast();返回此列表的最后一个元素。

int indexOf(Object o);返回次列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回-1

int lastIndexOf(Object o);返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回-1

ListIterator<E> listIterator(int index);返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始

boolean offer(E e);将指定元素添加到此列表的末尾(最后一个元素)。

boolean offerFirst(E e);在此列表开头插入指定的元素。

boolean offerLast(E e);在此列表末尾插入指定的元素。

E peek();获取但不移除此列表的头(第一个元素)。

E peekFirst();获取但不移除次列表的第一个元素,如果此列表为空,则返回null。

E peekLast();获取但不移除此列表的最后一个元素;如果此列表为空,则返回null。

E poll();获取并移除此列表的头(第一个元素)。

E pollFirst();获取并移除此列表的第一个元素,如果此列表为空,则返回null。

E pollLast();获取并移除此列表的最后一个元素,如果此列表为空,则返回null。

E pop();从此列表所表示的堆栈处弹出一个元素。换句话说就是移除并返回列表的第一个元素。

void push(E e);将元素推入此列表所表示的堆栈。换句话说就是将该元素插入此列表的开头。

E set(int index,E element);将此列表中指定位置的元素替换为指定的元素。

import java.util.HashSet;

public class TestHashSet {
public static void main(String[] args) {

HashSet hs=new HashSet();
hs.add(new A());
hs.add(new A());
hs.add(new B());
hs.add(new B());
hs.add(new C());
hs.add(new C());
System.out.println(hs);

}

}
class A{
public boolean equals(Object obj){
return true;
}
}
class B{
public int hashCode(){
return 1;
}
}
class C
{
public int hashCode(){
return 2;
}
public boolean equals(Object obj){
return true;
}
}


import java.util.HashSet;
import java.util.Iterator;

public class TestHashSet2 {

public static void main(String[] args) {

HashSet hs=new HashSet();
hs.add(new R(5));
hs.add(new R(-3));
hs.add(new R(9));
hs.add(new R(-2));

System.out.println(hs);

Iterator iterator=hs.iterator();
R first=(R)iterator.next();
first.count=-3;//1
System.out.println(hs);
hs.remove(new R(-3));
System.out.println(hs);
System.out.println("hs是否包含count为-3的R对象?"+hs.contains(new R(-3)));
System.out.println("hs是否包含count为5的R对象?"+hs.contains(new R(5)));

}

}
class R
{
int count;
public R(int count){
this.count=count;
}
public String toString(){
return "R(count属性:"+count+")";
}
public boolean equals(Object obj){
R r=(R)obj;
if(r.count==this.count){
return true;
}
return false;
}
public int hashCode(){
return this.count;
}
}


以上代码参考书籍《疯狂JAVA讲义》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: