博客
关于我
java中set集合的使用方法
阅读量:534 次
发布时间:2019-03-09

本文共 2562 字,大约阅读时间需要 8 分钟。

原文地址https://blog.csdn.net/u013399093/article/details/47749823

原文地址https://blog.csdn.net/tjcyjd/article/details/6872471

1.HashSet 

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

它有如下特点:

 1.它不允许出现重复元素-----------无重复

 2.不保证集合中元素的顺序---------无序
 3.允许包含值为null的元素,但最多只能有一个null元素。

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

[javascript] 
 
  1. public static List<Long> getGroups(List<Resource> resourceList) {  
  2.         Set<Long> 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<Long>(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       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

============================================================================================================================

Set的最大特点是能去掉重复的元素并获取相应数据,下面看个简单的代码,先使用QBC查询出所有员工,在过滤掉重复的员工所在部门,最后得到所有员工的部门串:

[java] 
 
  1. List<Employee> list = employeeDAO.findByExample(employee);  
  2.             Set set = new HashSet();  
  3.             for (int i = 0; i < list.size(); i++) {  
  4.                 set.add(list.get(i).getDepartmentId());  
  5.             }  
  6.             String deptIds = "";  
  7.             Iterator it = set.iterator();  
  8.             while (it.hasNext()) {  
  9.                 deptIds = "'" + it.next().toString() + "',";  
  10.             }  

你可能感兴趣的文章
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>
MySQL中的count函数
查看>>
MySQL中的DB、DBMS、SQL
查看>>
MySQL中的DECIMAL类型:MYSQL_TYPE_DECIMAL与MYSQL_TYPE_NEWDECIMAL详解
查看>>
MySQL中的GROUP_CONCAT()函数详解与实战应用
查看>>
MySQL中的IO问题分析与优化
查看>>
MySQL中的ON DUPLICATE KEY UPDATE详解与应用
查看>>
mysql中的rbs,SharePoint RBS:即使启用了RBS,内容数据库也在不断增长
查看>>
mysql中的undo log、redo log 、binlog大致概要
查看>>
Mysql中的using
查看>>
MySQL中的关键字深入比较:UNION vs UNION ALL
查看>>
mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
查看>>
mysql中的字段如何选择合适的数据类型呢?
查看>>
MySQL中的字符集陷阱:为何避免使用UTF-8
查看>>