我正在尝试根据 PostingsEntry 的 score 属性对 PostingsEntry 对象的 ArrayList 进行排序对象。该列表位于具有 sort() 方法的 PostingsList 对象中。
public class PostingsEntry implements Comparable<PostingsEntry>{
public int docID;
public double score = 0;
private TreeSet<Integer> positions = new TreeSet<Integer>();
/**
* PostingsEntries are compared by their score (only relevant
* in ranked retrieval).
*
* The comparison is defined so that entries will be put in
* descending order.
*/
public int compareTo( PostingsEntry other ) {
return Double.compare( other.score, score );
}
}
public class PostingsList{
private int position = 0;
/** The postings list */
private ArrayList<PostingsEntry> list = new ArrayList<PostingsEntry>();
private class PostingsEntryComparator implements Comparator<PostingsEntry>{
@Override
public int compare(PostingsEntry pA, PostingsEntry pB){
return pA.docID - pB.docID;
}
}
/** Number of postings in this list. */
public int size() {
return list.size();
}
/** Returns the ith posting. */
public PostingsEntry get( int i ) {
return list.get( i );
}
public void sort(){
Collections.sort(list, new PostingsEntryComparator());
}
}
我正在尝试对此处的列表进行排序:
// sort postingsList
postingsList.sort();
然后我打印结果:
for(int i=0; i<postingsList.size(); i++){
System.out.println(index.docNames.get(postingsList.get(i).docID));
System.out.printf("score: %f\n\n", postingsList.get(i).score);
}
但是我得到:
davisWiki/Zombie_Attack_Response_Guide.f
score: 0,019064
davisWiki/EvanGray.f
score: 0,004368
davisWiki/Mortal_Forever.f
score: 0,002708
davisWiki/JasonRifkind.f
score: 0,767518
davisWiki/Measure_Z.f
score: 0,031980
这表明列表显然没有排序。我哪里错了?
最佳答案
您的电话sort通过不同的比较器:
public void sort(){
Collections.sort(list, new PostingsEntryComparator());
}
出于这种目的,这 PostingsEntryComparator将“自然顺序”替换为 score , 由 PostingsEntry 建立Comparable<PostingsEntry> 的实现.因此,条目在其 docID 上进行比较。 .如果你打印 docID代替 score ,您会看到您的列表已根据 ID 正确排序。
注意:由于整数溢出,减去正在比较的两个项目的 ID 可能会产生不正确的结果。使用 Integer.compare 相反,以与您正确使用 Double.compare 相同的方式在PostingsEntry.compareTo .
关于java - Collections.sort() 使我的列表未排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48732304/
是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
HashMap中为什么引入红黑树,而不是AVL树呢1.概述开始学习这个知识点之前我们需要知道,在JDK1.8以及之前,针对HashMap有什么不同。JDK1.7的时候,HashMap的底层实现是数组+链表JDK1.8的时候,HashMap的底层实现是数组+链表+红黑树我们要思考一个问题,为什么要从链表转为红黑树呢。首先先让我们了解下链表有什么不好???2.链表上述的截图其实就是链表的结构,我们来看下链表的增删改查的时间复杂度增:因为链表不是线性结构,所以每次添加的时候,只需要移动一个节点,所以可以理解为复杂度是N(1)删:算法时间复杂度跟增保持一致查:既然是非线性结构,所以查询某一个节点的时候