HashSet中常用方法总结

一.集合

集合说通俗点就是个容器,用于存储、提取、删除数据,它和数组的最大区别就是数组的个数是指定的、有限的,而集合的容量是无限的。

集合在java中实现的结构大致如下图所示,橘黄色的代表接口,浅蓝色的代表抽象类,深蓝色的代表普通类。

集合Collection拥有两大分支:List接口和Set接口,List接口的两个实现类是ArrayList和Vector,Set的两个实现类是TreeSet和HashSet。

下面讲述HashSet的常用方法。 

二.HashSet集合的特点

HashSet集合的创建如下:

package set;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
	}
}

这里涉及到了HashSet集合创建的过程,我们按住Ctrl点击HashSet类,进入源代码会看到在HashSet构造方法中创建了一个HashMap对象存到了全局变量map中。

    public HashSet() {
        map = new HashMap<>();
    }

1.HashSet中的元素不能重复

元素不能重复的原因在下面介绍方法的时候以add(String)方法为例分析。

2.HashSet中的元素的存储顺序

HashSet中的元素在存储时是无序的存储 ,在下面叙述Iterator()方法,对集合进行遍历时会在示例中证明。

三.常用方法

1.add(String)

该方法用于向List集合容器中添加元素,使用示例如下:

package set;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("Tom");
		set.add("Jerry");
		set.add("ABC");
	}
}

我们以add(String e)为例着重说一下,按住Ctrl点击add方法进入源代码如下。

刚才我们进入HashSet源代码中时看到在HashSet构造方法中map变量里存储HashMap类对象,这时再分析下面的代码,调用map变量中HashMap的方法put赋值一个String类和一个常量,所以我们可以得到HashSet的其中一个特点就是和HashMap一样元素的值不能重复。

HashMap类集合见博客:HashMap中常用方法的总结

    public boolean add(E e) {
        return map.put(e, PRESENT)==null;
    }

2.size()

该方法用于返回集合中有多少个元素,使用示例如下:

package set;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("Tom");
		int length=set.size();
		System.out.println(length);
	}
}

3.remove(Object  obj)

该方法用于删除指定元素,删除成功则返回true,没找到指定元素则返回false,使用示例如下:

package set;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("Tom");
		set.add("Jim");
		System.out.println(set.remove("Tom"));
		System.out.println(set.remove("Lucy"));
		System.out.println(set.size());
	}
}

4.clear()

该方法用于清空list集合中所有元素,使用示例如下:

package set;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("Tom");
		set.add("Jim");
		System.out.println(set.size());
		set.clear();
		System.out.println(set.size());
	}
}

5.isEmpty()

该方法用于判断集合容器是否没有元素,如果没有元素则返回true,使用示例如下:

package set;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("Tom");
		set.add("Jim");
		System.out.println(set.isEmpty());
		set.clear();
		System.out.println(set.isEmpty());
	}
}

6.contains(Object o)

该方法用来判断list中是否包含该元素,如果有则返回true,使用示例如下:

package set;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("Tom");
		set.add("Jim");
		System.out.println(set.contains("Tom"));
		set.remove("Tom");
		System.out.println(set.contains("Tom"));
	}
}

7.iterator()

该方法返回在此Set中的元素上进行迭代的迭代器,可以调用set变量中的方法iterator()方法对集合中的元素进行遍历,遍历时用到了Iterator类中的hasNext()方法和Next方法。其中,iterator.hasNext()方法的作用就是判断当前“指针”下面是否还有元素;iterator.next()方法的作用是,如果指针下面有元素,则移动指针并获取相应位置的元素,操作代码如下:

package set;

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

public class Test {

	public static void main(String[] args) {
		HashSet<String> set=new HashSet<String>();
		set.add("Tom");
		set.add("Jim");
		set.add("Jerry");
		Iterator<String> iterator=set.iterator();
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

我们可以看到输出结果中并不是按赋值顺序,说明HashSet集合中元素的存储顺序是无序的。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值