Java 集合SortedSet&SortedMap讲解 2022-05-27 09:18 43阅读 0赞 转载自 https://blog.csdn.net/u010126792/article/details/62235628 这次对java集合框架学习中的两个特殊的接口进行介绍:SortedSet和SortedMap, 这两个接口提供排序操作,实现他们的子类都具有接口中定义的功能。Set和Map本身不具备排序功能,提供了SortedMap和SortedSet接口之后可以在提供排序方案的同时,增加更多的获取集合特定位置元素的方法。类似:结合的第一个元素,最后一个元素,位于特定元素之间的元素等。 ## ## 1 SortedSet接口 **\[java\]** [view plain][] [copy][view plain] 1. public interface SortedSet<E> extends Set<E> \{ 所有已知实现类: ConcurrentSkipListSet, TreeSet **\[java\]** [view plain][] [copy][view plain] 1. //SortedSet提供的方法: 2. java.util.SortedSet.comparator()//自己定义比较器,对内部元素排序 3. java.util.SortedSet.first()//第一个元素 4. java.util.SortedSet.headSet(E e)//e之前的元素,不包括e 5. java.util.SortedSet.last()//最后一个元素 6. java.util.SortedSet.spliterator()//Java8新增,生成Spliterator接口,有点类似nio里的selector 7. java.util.SortedSet.subSet(E e1, E e2)//e1和e2之间的元素 8. java.util.SortedSet.tailSet(E e)//e之后的元素,包括e 利用实现了sortedSet的集合进行实验: **\[java\]** [view plain][] [copy][view plain] 1. //利用实现了SortedSet的TreeSet做实验 2. SortedSet<String> sortedTreeSet = new TreeSet<String>(); // SortedSet接收TreeSet的实例 3. // 增加元素 4. sortedTreeSet.add("aa"); 5. sortedTreeSet.add("bb"); 6. sortedTreeSet.add("cc"); 7. sortedTreeSet.add("dd"); 8. 9. // 重复元素,不能 加入 10. sortedTreeSet.add("aa"); 11. sortedTreeSet.add("bb"); 12. // 增加元素 13. sortedTreeSet.add("ee"); 14. 15. System.out.println("共有多少个元素:" + sortedTreeSet.size());//添加了7个元素,减去重复的剩余5个 16. System.out.println("第一个元素:" + sortedTreeSet.first());//第一个元素:aa 17. System.out.println("最后一个元素:" + sortedTreeSet.last());//最后一个元素:ee 18. System.out.println("headSet元素:" + sortedTreeSet.headSet("cc"));//cc之前的元素:\[aa bb \] 19. System.out.println("tailSet元素:" + sortedTreeSet.tailSet("cc"));//cc之后的元素:\[cc dd ee\] 20. System.out.println("subSet元素:" + sortedTreeSet.subSet("bb", "dd"));//bb到dd之间的元素:\[bb cc\] 21. // System.out.println("spliterator元素:" + sortedTreeSet.spliterator());// Java8 中提供 22. 23. 24. //实现SortedSet.comparator()功能,此处定义了一个Man类,包括name和age,然后加入new Comparator,后面的 25. //SortedMap也具有此接口,不在讲解。 26. 27. 28. SortedSet<Man> sortedManSet = new TreeSet<Man>(new Comparator<Man>() \{ 29. 30. @Override 31. public int compare(Man o1, Man o2) \{ 32. // TODO Auto-generated method stub 33. return o1.getAge()-o2.getAge(); 34. \} 35. \}); 36. Man m1=new Man("li1",22); 37. Man m2=new Man("li2",25); 38. Man m3=new Man("li3",19); 39. Man m4=new Man("li4",23); 40. Man m5=new Man("li5",21); 41. sortedManSet.add(m1); 42. sortedManSet.add(m2); 43. sortedManSet.add(m3); 44. sortedManSet.add(m4); 45. sortedManSet.add(m5); 46. 47. Iterator interator2=sortedManSet.iterator(); 48. while(interator2.hasNext())\{ 49. Man man=(Man)interator2.next(); 50. System.out.println("man name =="\+man.getName()); 51. \} 52. 53. System.out.println("====================================="); 结果: 共有多少个元素:5 第一个元素:aa 最后一个元素:ee headSet元素:\[aa, bb\] tailSet元素:\[cc, dd, ee\] subSet元素:\[bb, cc\] ===================================== 排序之后 man name ==li3 man name ==li5 man name ==li1 man name ==li4 man name ==li2 ===================================== ## 2 SortedMap 接口 ## public interface SortedMap<K,V> extends Map<K,V> \{ 所有已知实现类: ConcurrentSkipListMap, TreeMap 接口提供的方法: **\[java\]** [view plain][] [copy][view plain] 1. java.util.SortedMap.comparator()//接收比较器,用于Map排序 2. java.util.SortedMap.entrySet() //后去Map中的entrySet集合 3. java.util.SortedMap.firstKey() //第一个key 4. java.util.SortedMap.headMap(K k)//在k之前的键值对 5. java.util.SortedMap.keySet() //获取key的set集合 6. java.util.SortedMap.lastKey() //最后的key 7. java.util.SortedMap.subMap(K k1, K k2)//k1,k2之间的键值对 8. java.util.SortedMap.tailMap(K) //集合最后的键值对 9. java.util.SortedMap.values() //集合所有的values SortedMap实验: **\[java\]** [view plain][] [copy][view plain] 1. SortedMap<String,Integer> sortedTreeMap = new TreeMap<String,Integer>(); // SortedMap接收TreeMap的实例 2. // 增加元素 3. sortedTreeMap.put("aa", 11); 4. sortedTreeMap.put("bb", 22); 5. sortedTreeMap.put("cc", 33); 6. sortedTreeMap.put("dd", 44); 7. sortedTreeMap.put("ee", 55); 8. 9. System.out.println("共有多少个元素:" + sortedTreeMap.size());//添加了7个元素,减去重复的剩余5个 10. System.out.println("entrySet:" + sortedTreeMap.entrySet());//所有的键值对 11. System.out.println("第一个元素:" + sortedTreeMap.firstKey());//第一个key元素 12. System.out.println("最后一个元素:" + sortedTreeMap.lastKey());//最后一个key元素 13. System.out.println("headSet元素:" + sortedTreeMap.headMap("cc"));//cc之前的元素 14. System.out.println("tailSet元素:" + sortedTreeMap.tailMap("cc"));//cc之后的元素 15. System.out.println("subSet元素:" + sortedTreeMap.subMap("aa", "dd"));//aa到dd之间的元素 16. System.out.println("subSet元素:" + sortedTreeMap.values());//values,所有的value值 17. 结果: 结果: 共有多少个元素:5 entrySet:\[aa=11, bb=22, cc=33, dd=44, ee=55\] 第一个元素:aa 最后一个元素:ee headMap元素:\{aa=11, bb=22\} tailMap元素:\{cc=33, dd=44, ee=55\} subMap元素:\{aa=11, bb=22, cc=33\} 所有的values值:\[11, 22, 33, 44, 55\] 后面的文章将要讲解扩展了SortedMap和SortedSet接口的NavigableMap与NavigableSet接口,具有了针对给定搜索目标返回最接近匹配项的导航方法。 [view plain]: https://blog.csdn.net/u010126792/article/details/62235628# 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java 集合,单列集合 概述: 集合是java中存储数据一种容器,可以分为单列集合Collection和双列集合Map。单列集合Collection又分为List和Set,这两个继承Collec... 女爷i/ 2021年06月10日 18:35/ 0 赞/ 481 阅读
相关 java集合讲解 (一)集合的体系 集合: 单例集合 \--Collection 根接口 \----List接口:实现了List集合类的特点,有序,可重复。 \------ArrayL 太过爱你忘了你带给我的痛/ 2021年09月22日 16:42/ 0 赞/ 161 阅读
相关 java动态代理讲解(实例讲解) 动态代理 功能不更改原有业务功能的情况下,记录方法执行日志 实现方法 1.动态代理 jdk动态代理:jdk动态代理是基于java反射机制来实现的,主 港控/mmm°/ 2021年10月01日 19:22/ 0 赞/ 229 阅读
相关 Collection集合和Collections的对比讲解 目录 Collection集合 概述: 集合:集合是java中提供的一种容器,可以用来存储多个数据,集合和数组都是容器. 常用的功能: Collection是所有单列 本是古典 何须时尚/ 2022年02月16日 18:02/ 0 赞/ 55 阅读
相关 java集合框架详细讲解 标题 java集合框架 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6L 淩亂°似流年/ 2022年03月16日 15:42/ 0 赞/ 84 阅读
相关 Java集合详细讲解 文章目录 一、集合概述 二、Set 集合 2.1 HashSet 2.2 LinkHashSet 2.3 TreeSe 电玩女神/ 2022年05月09日 17:46/ 0 赞/ 41 阅读
相关 BP算法精彩讲解集合 [BP神经网络的数学原理及其算法实现][BP]: [http://blog.csdn.net/zhongkejingwang/article/details/44514073] 野性酷女/ 2022年05月21日 05:18/ 0 赞/ 25 阅读
相关 Java 集合SortedSet&SortedMap讲解 转载自 https://blog.csdn.net/u010126792/article/details/62235628 这次对java集合框架学习中的两个特殊的接口进行介 迈不过友情╰/ 2022年05月27日 09:18/ 0 赞/ 44 阅读
相关 Java集合(一):Java集合概述 注:本文基于JDK 1.7 1 概述 Java提供了一个丰富的集合框架,这个集合框架包含了许多接口、虚拟类和实现类。这些接口和类提供了丰富的功能,能够满足基本的聚合需求 一时失言乱红尘/ 2022年07月27日 18:40/ 0 赞/ 45 阅读
相关 java j集合_JAVA 集合 (一)对象数组 (1) 存储对象的一个数组 Student\[\] student = new Student\[5\] ; Arrays:针对数组操作的工具类 (提供了 爱被打了一巴掌/ 2022年11月03日 08:50/ 0 赞/ 40 阅读
还没有评论,来说两句吧...