从ArrayList中检索单个值

时间:2015-12-28 09:54:58

标签: java arraylist

我面临的问题是如何从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中检索值,以便我做一个正确的输出。帮助将不胜感激。

1 个答案:

答案 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中,可以轻松找到任何源,目标,端口等。 内部路由集的任何更改都不会干扰呼叫者。