`
sundful
  • 浏览: 1263895 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用TreeMap进行排序

 
阅读更多

java.util.TreeMap 放入其中的value,自动按key进行排序, 默认的排序规则按ascii码排序,如果是key是英文和数字不会有问题,如果中文

则会出现问题,需要自己写排序规则。

比较器需要实现java.text.Collator类,例如:

package cn.tjopen.mediaman.util;

import java.text.CollationKey;
import java.text.Collator;

public class CollatorComparator extends Collator {
 private Collator collator = Collator.getInstance();
 private int sort=1;
 @Override
 public int compare(String arg0, String arg1) {
  CollationKey key1 = collator.getCollationKey(arg0);
     CollationKey key2 = collator.getCollationKey(arg1);
     return sort*key1.compareTo(key2);
 }
 /**
  * 设定排序的方向
  * @param i 排序方向(正数:正序;负数:倒序)
  */
 public void setSort(int i){
  if(i>0){
   sort=1;
  }else if(i<0){
   sort=-1;
  }
 }
 @Override
 public CollationKey getCollationKey(String arg0) {
//   TODO Auto-generated method stub
  return null;
 }

 @Override
 public int hashCode() {
  // TODO Auto-generated method stub
  return 0;
 }

}

 

比较器的使用:

int sort = 1;//>0正序<0倒叙

CollatorComparator comparator = new CollatorComparator();
  comparator.setSort(sort);
  Map map = new TreeMap(comparator);

 

然后在把要排序的字段作为key,相应的信息作为对应的value,即可实现排序

注意:key值不能重复,如果排序字段有重复,则需要进行处理。

例如:方法一:在向map中存放数据时,先判断要放的key是否已存在,如果存在在当前值后面加一区分标记

方法二:如果信息中有不可能重复的字段,在排序字段后面加上这个不重复的字段值,把这个组合当做key

分享到:
评论

相关推荐

    java 中 TreeMap排序

    在Java编程语言中,`TreeMap`是一种基于红黑树数据结构实现的键值对容器,与`HashMap`不同,`TreeMap`自动按照键的自然顺序或者自定义的比较器进行排序。当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一...

    浅谈JsonObject中的key-value数据解析排序问题

    第一种方案是利用TreeMap进行排序。TreeMap是一种基于红黑树的NavigableMap实现,它可以在插入键值对时,自动按键的自然顺序或指定的Comparator进行排序。使用TreeMap时,通常会先将所有的键值对取出,然后逐一放入...

    Treemap-4.1.2

    1. **排序**:TreeMap会根据键的自然顺序或者在创建时指定的比较器进行排序。如果键是可比较的对象(实现了Comparable接口),那么它们将按照自然顺序排序。否则,你需要提供一个Comparator对象来定义排序规则。 2....

    java treemap 学生信息

    在“java treemap 学生信息”这个场景中,`TreeMap` 被用来存储和管理学生信息,以高效地进行总分统计、平均分计算、最大分和最小分的查找。 首先,我们来理解一下如何使用`TreeMap`来存储学生信息。每个学生的信息...

    TreeMap in Java_java_treemap_

    1. **排序**:默认情况下,`TreeMap`按照键的自然顺序进行排序,即键必须实现`Comparable`接口。如果键是自定义对象,需要重写`compareTo()`方法来定义排序规则。另外,可以通过传入自定义的`Comparator`给构造函数...

    对map里面的value进行排序

    Map接口不直接支持排序,但是Java提供了一些实现了SortedMap接口的类,如TreeMap,它会按照键(Key)的自然顺序或者自定义比较器(Comparator)进行排序。但是,对于已经创建的HashMap或其他非排序Map,我们不能直接...

    TreeMap实现原理.pdf

    Java中的TreeMap是一个基于红黑树的NavigableMap实现,它能够在键值对插入时按照键的自然顺序或自定义的Comparator进行排序。TreeMap提供了有序的Map实现,因此在需要按照插入顺序或其他特定顺序遍历键值对时非常...

    java编写的命令行学生信息管理程序(用treemap)

    1. **有序性**:`Treemap`中的元素按照键的自然顺序或者比较器提供的顺序进行排序。在这个学生信息管理程序中,可能使用学号作为键,因为学号通常具有自然排序。 2. **高效查询**:由于`Treemap`是红黑树的实现,其...

    PHP-TreeMap.zip

    测试用例应覆盖各种情况,如插入已存在的键、插入新的键、删除不存在的键以及在树中进行多轮插入和删除后进行查找等。 在PHP中实现红黑树是一项挑战,因为PHP语言本身并不提供内置的原生数据结构来支持这种复杂的...

    557.555.JAVA基础教程_集合-TreeMap两种添加方式的使用(557).rar

    Java编程语言中的集合框架是开发过程中不可或缺的一部分,而TreeMap作为集合框架中的一员,它是一种有序的Key-Value存储结构,适用于需要...通过实践和学习,你将能够更好地利用TreeMap来优化你的代码和提升程序效率。

    HashMap集合排序

    在Java编程语言中,`HashMap` 是一个常用的...在这个例子中,我们利用 `TreeMap` 的排序功能,结合自定义的 `Car` 类,实现了按照速度和型号双重排序的功能。通过这种方式,我们可以更方便地管理和显示有序的数据集。

    词频统计(未排序)

    自然语言理解 关于词频统计的代码 利用treemap来完成

    利用树计算简单表达式 排序

    在本主题中,“利用树计算简单表达式 排序”主要涉及到如何将数学表达式转化为树形结构来方便计算,并结合排序算法进行高效处理。 首先,让我们详细探讨树在计算表达式中的应用。树通常被用来表示算术或逻辑表达式...

    Java提高篇之TreeMap编程开发技术共24页.pdf

    - `TreeMap`是一个实现了`SortedMap`接口的类,这意味着它能够自动对键进行排序,要么根据自然顺序,要么根据提供的`Comparator`。 - 键必须实现`Comparable`接口,以便进行比较和排序。 2. **插入与删除操作** ...

    泛型、TreeMap.rar

    由于`TreeMap`内部会根据键的自然顺序或比较器进行排序,所以键的类型必须实现`Comparable`接口,或者在创建`TreeMap`时传入自定义的`Comparator`。 总结一下,Java泛型是编写类型安全、高效代码的关键工具。通过...

    HashMap排序

    2. **使用TreeMap或Collections.sort()**:可以使用`TreeMap`或者`Collections.sort()`方法来对键进行排序。这里展示了两种不同的实现方式: - 使用`TreeMap`:创建一个`TreeMap`对象并传入`ByValueComparator`作为...

    java map 集合 排序

    1. **TreeMap** 是一个基于红黑树实现的Map,它会自动根据键的自然顺序或自定义比较器进行排序。例如: ```java import java.util.TreeMap; TreeMap, Integer&gt; treeMap = new TreeMap(); treeMap.put("apple", 1);...

    红黑树算法实现

    通过这种方式,TreeSet可以利用TreeMap的排序和查找能力,同时提供Set接口规定的操作。 总结: 红黑树是TreeMap和TreeSet高效运作的基础,它通过自我平衡的特性确保了数据结构的高效性。在Java的集合框架中,...

    联系人排序功能的实现

    在这个场景中,我们关注的是如何利用比较器(Comparator)来实现联系人列表的动态排序,既可以按姓名,也可以按电话号码进行排列。 首先,联系人数据通常存储在List或其他类型的集合中,每个联系人对象包含姓名和...

    通过分析_JDK_源代码研究_TreeMap_红黑树算法实现.docx

    红黑树是一种自平衡的排序二叉树,用于实现 TreeMap 和 TreeSet,以保证高效的查找、插入和删除操作。其特点如下: 1. **性质**: - 每个节点要么是红色,要么是黑色。 - 根节点总是黑色。 - 每个叶子节点(NIL ...

Global site tag (gtag.js) - Google Analytics