我将尝试从上一个问题中澄清我的问题描述。 我有一个这样的课:
class Edge{
Integer from;
Integer to;
Integer sign;
Long time;
}
这种类型的TreeMap:
TreeMap<Integer, ArrayList<Edge>> edgesByCluster = new TreeMap<Integer, ArrayList<Edge>>();
所以我的问题是:假设我创建了一个像这样的对象边缘:
Edge edge = new Edge();
edge.from = from[edgeCounter-1];
edge.to = to[edgeCounter-1];
edge.sign = sign[edgeCounter-1];
edge.time = time[edgeCounter-1];
从文件中读取edge.from,edge.to,edge.sign和edge.time的值。如何将对象值添加为edgesByCluster TreeMap的值?这意味着什么是正确的语法?
谢谢。
答案 0 :(得分:1)
好。您有一个Edge对象列表。此列表由整数标识。此列表放置在此类列表的映射中,其中每个列表由其整数标识。
您创建一个Edge对象。你想把它放在TreeMap中。我将假设您要将Edge添加到现有列表中;如果你想添加一个全新的列表,那么这个过程就不会那么不同了。
首先,您需要标识目标列表的整数。我假设你有一个(id
以下);你可能从获得所有其他Edge数据的同一个地方得到它。
ArrayList<Edge> list = edgesByCluster.get( new Integer( id ) );
这将在TreeMap中找到列表。 get
想要一个对象,所以我将int
变成一个整数。 (个人偏好:我在Java中避免自动装箱。)注意list
仍在TreeMap中;我们没有删除它。
或者,您可以向edgesByCluster添加新列表:
ArrayList<Edge> list = new ArrayList<Edge>();
edgesByCluster.put( new Integer( id ), list );
现在您拥有所需的列表,只需将Edge对象添加到其中:
list.add( edge );
你已经完成了。您的Edge实例位于EdgesByCluster中。
这可能不会解决你所有的问题,但它应该给你一个开始。