0

我有一个带有重复编号(1,1,1,1,2,2,2,2,3,4,5 等)的数字字段,它定义了数据在视图中的位置。我想在执行 database.search 时保留这种排序或对数据进行排序,这将返回一个 NotesDocumentCollection。

Ulrick Krause 发布了使用 Treemap 的解决方案,但 Treemap 不允许重复:http ://openntf.org/XSnippets.nsf/snippet.xsp?id=sort-notesdocumentcollection-by-itemname

非常感谢服务器端 JS 中的任何建议。

4

1 回答 1

2

您可以使用 Vector 而不是仅添加文档。像这样的东西:

var tm:java.util.TreeMap = new java.util.TreeMap();

while (doc != null) {
  var v:java.util.Vector;
  if (tm.containsKey(doc.getItemValueString(iName))) {
     v = tm.get(doc.getItemValueString(iName));
  }else{
     v = new java.util.Vector();
  }
  v.add(doc);
  tm.put(doc.getItemValueString(iName), v);       

  doc = col.getNextDocument(doc);
}

然后,您必须迭代 Map 和包含的 Vectors 才能对结果进行排序。

编辑:

这就是您创建结果向量的方式:

var rl:java.util.Vector = new java.util.Vector();  
var tCol:java.util.Collection = tm.values();
var tIt:java.util.Iterator  = tCol.iterator();

while (tIt.hasNext()) {
    v = tIt.next();
    for( var i=0; i<v.size(); i++ )
       rl.add( v.get(i) );
}

return rl;  
于 2012-10-08T11:59:23.467 回答