java集合之HashSet

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讲义》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值