java中set集合的使用方法
2017-05-28 21:18
423 查看
1. HashSet
Java.util.HashSet类实现了Java.util.Set接口。它有如下特点:1.它不允许出现重复元素;
2.不保证集合中元素的顺序
3.允许包含值为null的元素,但最多只能有一个null元素。
下面代码是利用hashSet获取不重复的一组groupId:
public static List<Long> getGroups(List<Resource> resourceList) { Set<Long> set = new HashSet(); for (Resource resource : resourceList) { if (StringUtils.isNotBlank(resource.groupIds)) { for (String groupId : StringUtils.split(resource.groupIds, ",")) { if (StringUtils.isNotBlank(groupId)) { set.add(Long.parseLong(groupId)); } } } } return new ArrayList<Long>(set); }
2. 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()方法进行排序
相关文章推荐
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与LinkedHashSet类))
- 【我的Java笔记】List集合中set()方法的使用
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
- java中set集合的使用方法
- Java Set集合使用方法介绍(1)——在集合中插入字符串
- Java Set集合使用方法介绍(2)——宠物猫信息管理
- TreeSet(有序集合)对Comparable元素的排序(或使用Comparator)与元素equals方法的关系
- iOS开发OC基础:OC集合NSSet、NSMutableSet以及NSCountedSet的基本方法的使用
- java 对类中的属性使用set/get方法的作用
- 【java开发系列】—— 集合使用方法
- JAVA中关于set()和get()方法的理解及使用
- java 泛型深入之Set实用工具 各种集合泛型深入使用示例,匿名内部类、内部类应用于泛型探讨
- java Set的使用方法
- Java基础之TreeSet集合使用泛型、比较器排序示例:
- JAVA基础回顾1 遍历List Set 和Map集合的所有方法
- Java集合Set、List、Map的遍历方法
- java 泛型深入之Set实用工具 各种集合泛型深入使用示例,匿名内部类、内部类应用于泛型探讨
- Java集合对象的排序使用Collection.sort方法,先实现Comparable接口
- Java集合(set,map)的排序和HashCode方法详解
- java关于集合(list,set,map)的遍历与增强for循环的使用