`
yucang52555
  • 浏览: 68195 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

TreeSet排序

阅读更多
    今天查阅ansj源码是看到权重这里:
    private List<Keyword> computeArticleTfidf(String content, int titleLength) {
		Map<String, Keyword> tm = new HashMap<String, Keyword>();

		List<Term> parse = NlpAnalysis.parse(content);
		for (Term term : parse) {
			double weight = getWeight(term, content.length(), titleLength);
			if (weight == 0)
				continue;
			Keyword keyword = tm.get(term.getName());
			if (keyword == null) {
				keyword = new Keyword(term.getName(), term.natrue().allFrequency, weight);
				tm.put(term.getName(), keyword);
			} else {
				keyword.updateWeight(1);
			}
		}

		TreeSet<Keyword> treeSet = new TreeSet<Keyword>(tm.values());

		ArrayList<Keyword> arrayList = new ArrayList<Keyword>(treeSet);
		if (treeSet.size() <= nKeyword) {
			return arrayList;
		} else {
			return arrayList.subList(0, nKeyword);
		}

	}

     考虑到怕许问题,其实java中接口Set有众多实现类,而HashSet和TreeSet是最常用的两个,通过TreeSet实现排序的2种方式:
1.通过TreeSet(Comparator<? super E> comparator) 构造方法指定TreeSet的比较器进行排序;
2.使用TreeSet()构造方法,并对需要添加到set集合中的元素实现Comparable接口进行排序;
跟踪源代码,可以发现上面的例子,实用的就是第二种方式,查看Keyword类:
public class Keyword implements Comparable<Keyword> 

可以看到该类以下方法:
@Override
public int compareTo(Keyword o) {
		if (this.score < o.score) {
			return 1;
		} else {
			return -1;
		}
	}

接下来我们实现一下第一种方式:
实体类:
public class AA {
 private int num;

 public int getNum() {
  return num;
 }

 public void setNum(int num) {
  this.num = num;
 }
 
 public String toString()
 {
  return "AA:" + this.getNum() + ",";
 }
}

比较器:
import java.util.Comparator;

public class MyComparator implements Comparator<AA> {

 public int compare(AA a1,AA a2) {
  
  if (f1.getNum() > f2.getNum())
  {
   return 1;
  }
  else if (a1.getNum() == a2.getNum())
  {
   return 0;
  }
  else
  {
   return -1;
  }
 }
}

接下来就是使用了:
TreeSet<Foo> set = new TreeSet(new MyComparator());

这样在set.add()元素时就会根据自己定义比较器进行排序了。

程序猿行业技术生活交流群:181287753(指尖天下),欢迎大伙加入交流学习。
分享到:
评论

相关推荐

    尚硅谷-实验:TreeSet的自然排序与定制排序.pdf

    本教程特点: 1.更适合零基础学员: ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅...

    浅谈java中的TreeMap 排序与TreeSet 排序

    下面小编就为大家带来一篇浅谈java中的TreeMap 排序与TreeSet 排序。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    浅谈TreeSet中的两种排序方式

    下面小编就为大家带来一篇浅谈TreeSet中的两种排序方式。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    学生成绩排序(TreeSet方式实现)

    通过TreeSet类直接对学生成绩实现了排序功能,不必要进行相关额外的排序来实现!

    用TreeSet,添加字符串,按照长度和字母顺序排序

    用TreeSet添加字符串,按照字符串首字母字母顺序和字符串长度顺序排序

    解决TreeSet类的排序问题

    本文介绍TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。详细请看下

    TreeSet 不用自然排序自己做比较器

    public int compare(String o1,String o2) { return o1.length()-o2.length();... TreeSet ts = new TreeSet(com); ts.add("string"); ts.add("char"); ts.add("nothing�"); System.out.println(ts);

    java2实验实用模板代码

    java2实验实用模板代码(第三版) 上机实践1 初识JAVA 3 实验1 一个简单的应用程序 3 实验2 一个简单的JAVA APPLET程序 3 实验3 联合编译 4 上机实践2 基本数据类型与控制语句 6 ...实验2 使用TREESET排序 86

    java泛型 用了treeset

    使用TreeSet和Comparator,编写TreeSetTest2类,要求对TreeSet中的元素1-元素10进行排列,排序逻辑为奇数在前偶数在后,奇数按照升序排列,偶数按照降序排列。 如果需要的话可以下载,有写成文章的。有写了一点中文...

    java集合-TreeSet的使用

    排序性:TreeSet 中的元素是有序的,默认按照元素的自然顺序进行排序。或者,可以在创建 TreeSet 时提供一个比较器(Comparator)来指定自定义的排序规则。 唯一性:TreeSet 中不允许重复元素,每个元素都必须是...

    Java集合框架总结:TreeSet类的排序问题

    发布于2012-5-8TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。TreeSet会调用集合元素的compareTo(Objectobj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然...

    排序之HashSet和TreeSet的区别

    NULL 博文链接:https://elvin-chu.iteye.com/blog/1942033

    Java实用教程实验代码及答案

    实验3 使用TREESET排序........................................................................................................78 上机实践12 JAVA SWING......................................................

    Java数据结构--13.Java8数据结构TreeSet.pdf

    * 元素由它们的⾃然 Comparable 排序,或者通过⼀个由顺序 set 创建时特别提供的 * Comparator。这个 set 的迭代器将会以递增元素顺序横穿 set。提供多个额外的操作来⽀持排 * 序。(这个接⼝与 SortedMap 的 set ...

    计算机后端-Java-Java核心基础-第24章 集合01 25. TreeSet的自然排序.avi

    计算机后端-Java-Java核心基础-第24章 集合01 25. TreeSet的自然排序.avi

    计算机后端-Java-Java核心基础-第24章 集合01 26. TreeSet的定制排序.avi

    计算机后端-Java-Java核心基础-第24章 集合01 26. TreeSet的定制排序.avi

    Java 2实用教程(第三版)实验指导与习题解答

    实验3 使用TreeSet排序 72 上机实践12 java Swing 74 实验1 JLayeredPane分层窗格 74 实验2 使用表格显示日历 75 实验3 多文档界面(MDI) 78 上机实践1 初识Java 实验1 一个简单的应用程序 2.模板代码 Hello....

    Java + 集合 + TreeSet +定制排序

    Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师。 从互联网到企业平台,Java是应用最广泛的编程语言. Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行; Java程序易于编写,而且有...

    java排序代码

    TreeSet支持两种排序方式: 自然排序:TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列。 定制排序:在创建TreeSet集合对象时,并提供一个Comparator接口...

    java HashSet 集合排序

    java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。

Global site tag (gtag.js) - Google Analytics