将LinQ转换为标准Java

时间:2013-06-10 19:28:48

标签: c# java linq

我还在学习如何使用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);
}

如果我理解正确,这两行代码都会遍历整个SortedSet _set。

第一行添加_set中的所有消息,其中每条消息的属性0小于epochWindowTime。

第二行从_set中删除消息的属性0小于epochWindowTime的任何消息。

如果我要用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();

我的理解和实施是否正确?

0 个答案:

没有答案