0

ビュー内のデータの位置を定義する重複番号(1,1,1,1,2,2,2,2,3,4,5など)を持つ数値フィールドがあります。この並べ替えを維持するか、NotesDocumentCollectionを返すdatabase.searchが実行されたときにデータを並べ替えたいと思います。

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);
}

次に、結果を並べ替えるために、マップと含まれているベクトルを反復処理する必要があります。

編集:

そして、これが結果のベクターを作成する方法です。

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 に答える