0

LinQ を使用して C# コードを標準 Java に変換する方法をまだ学んでいます。私は現在、次のことに取り組んでいます。

// For reference
private SortedSet<Message> _set = new SortedSet<Message>(new MessageSentTimeStampComparer())

List<Message> messages = new List<Message>();
//
lock (_setLock)
{
   messages.AddRange(_set.Where((m) => long.Parse(m.Attribute[0].Value) < epochWindowTime));
   _set.RemoveWhere((m) => long.Parse(m.Attribute[0].Value) < epochWindowTime);
}

私がこれを正しく理解していれば、これら 2 行のコードは両方とも SortedSet _set 全体を反復処理します。

最初の行は、各メッセージの属性 0 が epochWindowTime より小さい _set 内のすべてのメッセージを追加します。

2 行目は、メッセージの属性 0 が epochWindowTime より小さいメッセージを _set から削除します。

この機能を Java で複製する場合、次のようにします。

_setLock.lock();

Iterator<Message> _setIter = _set.iterator();
//TODO

while(_setIter.hasNext())
{
    Message temp = _setIter.next();

    Long value = Long.valueOf(temp.getAttributes().
         get("Timestamp"));
    if(value.longValue() < epochWindowTime)
    {
        messages.add(temp);
        _set.remove(temp);
    }
}

_setLock.unlock();

私の理解と実装は正しいですか?

4

0 に答える 0