精华内容
下载资源
问答
  • javaset集合用法

    2018-03-27 11:19:03
    不保证集合中元素的顺序 3.允许包含值为null的元素,但最多只能有一个null元素。下面代码是利用hashSet获取不重复的一组groupId:[javascript] view plain copypublic static List<Long&g...

    1.HashSet 

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

    它有如下特点:

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

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

    [javascript] view plain copy
    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

    展开全文
  • Java中的集合框架之Set集合。1、Set集合介绍Java中的Set集合,是位于java.util包下,继承自Collection接口,是属于Collection接口的子接口。...即Set集合存储元素的顺序不一定和获取元素的顺序一致。<2&g...

    Java中的集合框架之Set集合。

    1、Set集合介绍

    Java中的Set集合,是位于java.util包下,继承自Collection接口,是属于Collection接口的子接口。

    Set集合出现在JDK1.2时期,其中它的实现类有多个,例如:HashSet、TreeSet等等。aa4d9d4305ed2db15c997d7aaa2629f2.png

    2、Set集合特点

    <1>Set集合是散列的。即Set集合存储元素的顺序不一定和获取元素的顺序一致。

    <2>Set集合不能存放重复的元素。

    3、Set集合中的方法

    由于Set接口继承自Collection接口,所以Set中的方法都与Collection一致,可以直接使用Collection接口中的方法。对集合进行增删改查操作。

    使用Set集合时,只需要注意Set集合的子类对象即可。

    4、Set集合之HashSet实现类介绍

    4.1、HashSet介绍

    HashSet是Set集合的实现类之一,位于java.util包下,也是在JDK1.2时期出现的。082dc334d852cf5e834dbf342de8b437.png

    HashSet底层是使用哈希表实现的,该类中的方法不可以同步访问,即:HashSet不是线程安全的。并且HashSet中存储的元素是没有顺序的。

    4.2、HashSet存储自定义对象

    HashSet存储自定义对象时,需要重写Object类中的equals()和hashCode()方法,这样才能包中元素的唯一性。4fbb0ee4a6d82f57e96c2758a172654c.png

    5、Set集合之TreeSet实现类介绍

    5.1、TreeSet介绍

    TreeSet是Set集合的另一个常见实现类,位于java.util包下,出现于JDK1.2时期。

    TreeSet是可以给Set集合指定元素的顺序的。默认情况下,是通过元素的自然顺序进行排序。TreeSet底层是通过TreeMap实现的。5f6352964a55c7278630367f24f9c502.png

    5.2、TreeSet存储自定义对象

    TreeSet存储自定义对象时,需要实现Comparable接口,使得该自定义类是可以进行比较的。

    因为默认情况下,TreeSet是按照自然排序的规则进行排序集合元素,如果存储自定义对象时,还是按照自然排序规则,则会抛出异常。65c490a273b034c92f98b9dbe765b9ec.png

    抛出异常如上图所示。

    解决方法:让自定义对象类实现Comparable接口。46c78b30e25a6744bf535a97150d72c4.png

    然后实现compareTo()方法。f3820b01b43ae20bbeba39ab0ba71900.png

    可以在compareTo()方法中,定义排序规则。

    综上,Java中集合框架之Set集合介绍完了。

    展开全文
  • 1.HashSet  ...不保证集合中元素的顺序  3.允许包含值为null的元素,但最多只能有一个null元素。 下面代码是利用hashSet获取不重复的一组groupId: [javascript] view plain copy

    1.HashSet 

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

    它有如下特点:

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

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

    [javascript] view plain copy
    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小于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

    展开全文
  • Javaset集合使用

    千次阅读 2017-08-22 14:24:40
    (一).Set集合 1.添加到容器中的元素不能重复,就算重复只按一个元素算!...4.Set集合中的元素不按特定顺序排序。因此我们无法向list一样根据索引获取数据。 (二).HashSet集合使用 - 1.存取Hash...

    (一).Set集合

    • 1.添加到容器中的元素不能重复,就算重复只按一个元素算!
    • 2.Set集合继承Collection接口,方法全部来自Collection接口,自身没有定义其他方法。
    • 3.Set接口主要两个实现类为HashSet、TreeSet。
    • 4.Set集合中的元素不按特定顺序排序。因此我们无法向list一样根据索引获取数据。

    (二).HashSet集合的使用
    - 1.存取HashSet集合中的元素,是根据哈希码来存取。HashSet根据哈希码来确定元素在集合中存储的位置(内存地址)。
    - 2.HashSet不能保证迭代顺序,且允许元素为null
    - 3.比较两个HashSet集合是否相同,先比较hasCode()返回的值是否相同,在使用equals()方法比较两个HashSet存储位置是否相同。如果满足以上两个条件,则HashSet集合相同。
    - 4.hasCode()和equals()方法必须一起使用,以保证判断HashSet一致性。
    - 5.参考文档:http://www.java2s.com/Tutorials/Java/java.util/HashSet/index.htm

    (三)代码演示

    1.添加多个相同元素,但容器中只有一个

    package com.Collection;
    import java.util.HashSet;
    public class TestHasSet {
    
        public static void main(String[] args) {
             HashSet<String> object=new HashSet();
             object.add("中国");
             object.add("中国");
             object.add("中国");
             object.add("中国");
    
             System.out.println("object"+object);
    
        }
    
    }
    

    2.清空HashSet中的所有元素

    package com.Collection;
    import java.util.HashSet;
    public class TestHasSet {
    
        public static void main(String[] args) {
             HashSet<String> object=new HashSet();
             object.add("中国");
             object.add("中国");
             object.add("中国");
             object.add("中国");
    
             System.out.println("object"+object);
    
             object.clear();
             System.out.println("清空object后"+object);
    
        }
    
    }

    3.删除指定名称的元素

    package com.Collection;
    import java.util.HashSet;
    public class TestHasSet {
    
        public static void main(String[] args) {
             HashSet<String> object=new HashSet();
             object.add("中国");
             object.add("美国");
             object.add("日本");
             object.add("俄罗斯");
    
             System.out.println("object"+object);
    
             object.remove("中国");
             System.out.println("清空object后"+object);
    
        }
    
    }

    4.使用迭代器遍历HashSet中的所有元素

    package com.Collection;
    import java.util.HashSet;
    import java.util.Iterator;
    public class TestHasSet {
    
        public static void main(String[] args) {
             HashSet<String> object=new HashSet();
             object.add("中国");
             object.add("美国");
             object.add("日本");
             object.add("俄罗斯");
    
             Iterator iterator = object.iterator(); 
               while (iterator.hasNext()){
                     System.out.println("遍历HashSet中的所有元素: "+iterator.next());  
                  }
    
    
        }
    
    }
    

    5.获取HashSet集合中的元素个数

    package com.Collection;
    import java.util.HashSet;
    import java.util.Iterator;
    public class TestHasSet {
    
        public static void main(String[] args) {
             HashSet<String> object=new HashSet();
             object.add("中国");
             object.add("美国");
             object.add("日本");
             object.add("俄罗斯");
    
             System.out.println("HasHSet总元素为"+object.size());
    
        }
    
    }
    

    (四) TreeSet集合的使用

    • 1.TreeSet接口实现Set和SortedSet接口
    • 2.TreeSet集合中的元素是有顺序的,如果要排序直接使用TreeSet
    • 3.TreeSet的使用和其他集合差不多,

    代码演示
    1.排序

    package com.Collection;
    import java.util.TreeSet;
    public class TestTreeSet {
    
        public static void main(String[] args) {
    
            TreeSet<String> ts=new TreeSet();
            ts.add("张三");
            ts.add("李四");
            ts.add("王五");
            ts.add("宋小宝");
            ts.add("赵本山");
            System.out.println("树集合"+ts);
            System.out.println("树集合的第一个元素"+ts.first());
            System.out.println("树集合最后一个 元素"+ts.last());
            System.out.println("headSet(李四)"+ts.headSet("李四"));
            System.out.println("tailSet(李四)"+ts.tailSet("李四"));
            System.out.println("ceiling(四)"+ts.ceiling("四"));
    
    
        }
    
    }

    2.遍历TreeSet集合中的元素

    package com.Collection;
    import java.util.Iterator;
    import java.util.TreeSet;
    public class TestTreeSet {
    
        public static void main(String[] args) {
    
            TreeSet<String> ts=new TreeSet();
            ts.add("张三");
            ts.add("李四");
            ts.add("王五");
            ts.add("宋小宝");
            ts.add("赵本山");
    
    
              Iterator<String> iterator = ts.iterator();
    
              while (iterator.hasNext()){
                 System.out.println(iterator.next());
              }
    
        }
    
    }
    

    遍历List和set集合都可以使用迭代器遍历

    新的知识以后再接着写……………………………………………………………………………………………

    展开全文
  • Java集合set使用

    2020-07-16 14:27:52
    //set元素可以去除重复,存取顺序不一致,没有带索引方法所以不能使用普通FOR遍历也不能通过索引获取 //练习 //存取字符串进行遍历 Set set=new TreeSet<>(); set.add(“qqp”); set.add(“qq4”); set.a
  • JAVASet

    2015-07-13 15:51:04
    JavaSet貌似用的不是...2.集合中的顺序是杂乱的,不能像List那样通过get()来获取值; 3.允许包含值为null的元素,但是最多只能有一个null元素。 参考内容: http://blog.sina.com.cn/s/blog_869b0f460100uimp.html
  • java Set

    2021-03-25 13:53:46
    无序(添加和取出的顺序不一致),没有索引 不允许重复元素,所以最多包含一个null 和List接口一样,Set接口也是Collection接口的子接口,因此,常用方法和Collection接口一样 set接口的遍历方式 迭代器 增强for 不能使用...
  • 无序:添加的顺序获取的顺序不一致(不是集合本身是否有序,Tree自然有序) 无重复:添加的元素不能医治(如果出现重复元素,只存入第一个,后面重复的不再存入) HashSet(HashMap --> 数据存储结构 散列表)...
  • LinkedHashSet:遍历时,可以按照添加的顺序获取,实现一种“有序” TreeSet:只能存储相同类型的数据。可以根据添加的属性进行排序。 set中没有定义额外的方法,都是Collection中的方法 如何理解set的无序性和...
  • Java集合之Set

    2020-03-06 16:27:09
    interface Set 无序、无下标、元素不能重复(当插入新元素时,会调用euqals进行比较) 方法:全部继承自Collection中方法 ...Set集合中的元素不按特定顺序排序。因此无法向list一样根据索引获取数据。 引用到堆上...
  • 如何用迭代器来遍历集合中的元素:List二、List、Set、Map的区别1、List集合中元素允许重复,各元素的顺序就是对象插入的顺序;2、Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但Set集合中不能...
  • Java集详述-Set

    2021-03-13 16:47:21
    哈希表存放的是哈希值,HashSet存储元素的顺序并不是按照存入的顺序(和List显然不同),而是按照哈希值来存的,所以取数据也是按照哈希值取得,元素的哈希值是通过元素的hashCode方法来获取。 HashSet
  • 向集合中添加元素的方法为:add() 遍历集合的方式:迭代器 获取集合中元素个数的方法:size() 步骤 创建集合对象: 分别创建五个Student对象 使用add()方法将Student对象添加到集合中 使用迭代器遍历集合并打印,...
  • Set的特点是插入无序元素不可重复。至于选择哪个实现类来作为我们存储容器,我们就得看具体应用场景。是希望可重复就得用List,选择List 下常见子类。是希望不可重复,选择Set下常见子类。如果是Key -...
  • ArrayList和LinkedList都是按照被存进去的顺序保存的。存储的数据允许有重复的,可以根据下标获取对应的元素。 ArrayList优点是快速随机访问元素,缺点:在List插入和删除时比较慢。 LinkedList优点是在插入和删除...
  • Java基本容器类包括:List,Set,Queue,Map List,Set,Queue继承自Collection Set 接口实现类包括 HashSet,TreeSet,LinkedHashSet。 不保存重元素 ...LinkedHashSet:按照被添加的顺序保存对象 List Arr
  • 1、集合(conllection(接口))遍历时均可以使用迭代器迭代器用法:1、根据集合对象获取到对应集合迭代器2、调用 hasNext() 判断是否还有下一个值3、通过next()方法,获取下一个值2、List可以重复任意多个元素,...
  • java进阶学习二之Set

    2020-03-09 19:21:03
    元素的哈希值是通过元素的hashcode 方法来获取的 存储自定义类对象一般需要重写hashcode方法和equals方法 HashSet 首先判断两个元素的哈希值,哈希值不一样将视为不同元素且不会调用equals方...
  • 储存和取出的顺序不一致,元素唯一,不能根据索引获取元素 HashSet集合 :底层是通过HashMap实现的 底层new HashMap对象 ,只用了 key 并没有使用 value value指向统一地址 new Object() LinkedHashSet:HashSet...
  • 在下面的示例中,TableModel更新Set< Integer>检查setValueAt()的实现....请注意TreeSet的使用,其迭代器保留元素的自然顺序.import java.awt.Dimension;import java.awt.EventQueue;import java.awt....
  • HashSet实现了Set接口,使用Hash表来保存元素,因此不能保证元素的获取顺序; TreeSet 能对保存的元素进行排序。如果没有指定的排序方式,则按自然顺序排序,对于自然数就是升序排序。 上机测试,与上述有出入。 ...
  • java 集合类结构图 接口 实现类 保持插入顺序 可重复 排序 ...长于随机访问元素;但插入、删除元素较慢(数组特性) ...插入、删除元素较快,但...使用散列,最快的获取元素方法。 TreeSet N N Y 将元素存储在红-黑...
  • java集合如Map、Set、List等所有集合只能存放引用类型数据,它们都是存放引用类型数据容器,不能存放如int、long、float、double等基础类型数据 Set集合 set集合是Collection集合子接口一种 特点: 不包含...
  • 特点 Set集合中的元素是唯一,不可重复(取决于hashCode和... |--Set元素唯一,不保证存取顺序,只可以用迭代器获取元素。  |--HashSet:哈希表结构,非线程安全,查询速度较快。元素唯一性取决于hashCo
  • 1.List,Set,Map三者区别List(对付顺序的好帮手)List接口存储一组不唯一(可以有多个元素引用相同对象),有序对象Set(注重独一无二性质):不允许重复集合。不会有多个元素引用相同对象。Map(用Key来搜索...
  • 简谈集合 Set HashSet:最快获取元素方式,快速查找 TreeSet:按照比较结果的升序保存对象 List ...LinkedList:代价较低的在list中间进行插入和删除操作,提供了优化的顺序访问,随机访问...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 154
精华内容 61
关键字:

java获取set元素的顺序

java 订阅