我面临的问题是如何从ArrayList中检索值。我使用此代码传递值以删除重复:
Set<List<String>> allTCP=new LinkedHashSet<List<String>>();
for(int x=0; x < TCPSourceIP.size();x++){
allTCP.add(Arrays.asList(new String[]{TCPSourceIP.get(x),TCPSourcePort.get(x),TCPDestIP.get(x),TCPDestPort.get(x)}));
}
但现在我面临的问题是我不知道如何检索价值。我传入的值是10.1.1.1, 123, 10.1.1.2, 234
如果我使用System.out.println(allTCP)
,那么我不能使用List中的每个值。我需要从数组中获取单个值来执行正确的输出,例如,{ {1}}以前我使用此代码进行输出,但它没有删除重复。
The TCP Source IP is 10.1.1.1 with port 123 to Destination IP 10.1.1.2 with port 234.
任何人都可以给我建议如何从ArrayList中检索值,以便我做一个正确的输出。帮助将不胜感激。
答案 0 :(得分:4)
在这种情况下,我更喜欢将值封装到具有getter / setter的对象中,并将这些值的实例放入list / hashes中:
class Route {
private String sourceIp;
private Long sourcePort;
private String destIp;
private Long destPort;
public Route(Sting src, Long sport, String dest, Long dport) {
setSourceIp(src);
...
... etc.
然后
ArrayList<Route> allTcp = new ArrayList<Route>();
...
allTcp.add(new Route(src, sport, dst, dport) );
这个概念通过将复杂的比较方法放在类Route中,可以轻松找到任何源,目标,端口等。 内部路由集的任何更改都不会干扰呼叫者。