私はJavaベースのBukkitプラグイン(目前の問題とはかなり無関係ですが注目に値します)を持っています。このプラグインは、30分ごとにWeb APIにクエリを実行して、ユーザーに渡す更新を求めます。
これが既存のメソッドで、すべてのユーザーをAPIに渡すために正常に機能します。
public ApiMessenger()
{
TASK_ID = Bukkit.getScheduler().scheduleAsyncRepeatingTask(plugin,new Runnable()
{
@Override
public void run()
{
if(Bukkit.getOnlinePlayers().length > 0)
{
ApiMessenger.fetchPlayerItems(Bukkit.getOnlinePlayers(),true);
}
}
}, 20*60*30, 20*60*30);
}
ただし、APIは一度に最大30人のユーザーを受け入れます。
したがって、一度に30人を超えるユーザーがいるこのプラグインを使用しているサーバーは、残りのユーザーが無視されるため、一度にすべてのユーザーを送信することはできません。
私が理解しようとしているのは、上記のApiMessengerメソッドが送信されたユーザーを記憶し、送信されたユーザーを送信しようとするために、どのような設定ですべてのユーザーを何らかのタイムスタンプで保存できるかということです。最初に更新を最も長く待機します。
ユーザーが参加/離脱するときにユーザーの削除/追加を管理できますが、私の主な関心事は、最初に、30人のユーザーのグループが送信されるときに更新できる並べ替えられたデータ構造を作成することです。
残念ながら、昇順で繰り返すことができるような構造を作成するためにJavaのどのデータ型を使用するかはわかりません。