java中set集合的使用方法

刺骨的言语ヽ痛彻心扉 2022-06-15 09:46 313阅读 0赞

1.HashSet

Java.util.HashSet类实现了Java.util.Set接口。

它有如下特点:

1.它不允许出现重复元素;
2.不保证集合中元素的顺序
3.允许包含值为null的元素,但最多只能有一个null元素。

下面代码是利用hashSet获取不重复的一组groupId:

[javascript] view plain copy

  1. public static List getGroups(List resourceList) {
  2. Set set = new HashSet();
  3. for (Resource resource : resourceList) {
  4. if (StringUtils.isNotBlank(resource.groupIds)) {
  5. for (String groupId : StringUtils.split(resource.groupIds, “,”)) {
  6. if (StringUtils.isNotBlank(groupId)) {
  7. set.add(Long.parseLong(groupId));
  8. }
  9. }
  10. }
  11. }
  12. return new ArrayList(set);
  13. }

2.TreeSet

TreeSet是可以实现排序等功能的集合,它在对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中;

TreeSet是如何对对象进行排序的排序?TreeSet支持 两种排序方式:自然排序和客户化排序,默认情况下是自然排序.
在JDK中,有一部分类实现了Comparable接口,如Integer,Double和String等,Comparable接口有一个compareTo(Object o)方法,
它返回整数类型,对于表达式x.compareTo(y),如果返回值为0,表示x和y相等,如果返回值大于0,表示x大于y,如果小于0,表示x小于y. TreeSet调用对象的compareTo()方法比较集合中对象的大小,然后进行升序排序,这种方式称为自然排序.
客户化排序:
java.util.Comparator接口用于指定具体的排序方式,它有个compare(Object obj1,Object obj2),用于比较两个对象的大小.
当表达式compare(x,y)的值大于0,表示x大于y,小于0,表示x小于y,等于0,表示x等于y,如果想让TreeSet进按照Customer对象的
name属性进行降序排列,可以先创建实现Comparator接口的类CustomerComparator,如:
import java.util.*;
public class CustomerComparator implements Comparator
{
public int compare(Object o1,Object o2)
{
Customer c1=(Custoemr)o1;
Customer c2=(Customer)o2;
if(c1.getName().compareTo(c2.getName())>0) return -1;
if(c1.getName().compareTo(c2.getName())<0) return 1;
return 0;
}
}
接下来在构造TreeSet的实例时,调用它的TreeSet(Comparator comparator)构造方法
Set set=new TreeSet(new CustomerComparator());
Customer c1=new Customer(“TOM”,15);
Customer c2=new Customer(“JACK”,20);
Customer c3=new Customer(“MIKE”,38);
set.add(c1);set.add(c2);set.add(c3);
Iterator it=set.iterator();
while(it.hasNext())
{Custoemr customer=(Customer)it.next();
System.out.println(customer.getName()+”” +customer.getAge();)
}
当TreeSet向集合中加入Customer对象时,会调用CustomerComparator类的compare()方法进行排序,以上Tree按照
Custoemr对象的name属性进行降序排列,最后输出为:
TOM 15 MIKE 38 JACK 16

发表评论

表情:
评论列表 (有 0 条评论,313人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaSet集合

    目录 1、Set接口简介 2、HashSet 简介 特点 3、哈希值 4、HashSet存储的数据结构 5、set集合存储元素不重复原理 基本思路: 6、Ha

    相关 JavaSet集合使用

      除了List之外,Set集合接口也经常使用,Set接口中存放的元素是无序的并且是不可重复的,因此被称为数据集;   Set接口因为是无序的,所以没有提供像List一样的s