Java 从ArrayList检索单个值

Java 从ArrayList检索单个值,java,arraylist,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),TCPSource

我面临的问题是如何从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)}));
     }

有谁能给我一些建议,告诉我如何从ArrayList中检索值,以便我进行正确的输出。非常感谢您的帮助。

在这种情况下,我更喜欢使用getter/setter将值封装到对象中,并将这些值的实例放入列表/哈希:

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) );
ArrayList allTcp=new ArrayList();
...
添加(新路线(src、sport、dst、dport));
然后,通过将复杂的比较方法放在类路由中,这个概念将提供一种查找任何源、目的地、端口等的简单方法。
对内部路由集的任何更改都不会干扰调用者。

在这种情况下,我更喜欢使用getter/setter将值封装到对象中,并将这些值的实例放入列表/哈希:

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) );
ArrayList allTcp=new ArrayList();
...
添加(新路线(src、sport、dst、dport));
然后,通过将复杂的比较方法放在类路由中,这个概念将提供一种查找任何源、目的地、端口等的简单方法。

对内部路由集的任何更改都不会干扰调用者。

我有点困惑:allTCP是一个集合,而不是一个列表。集合没有索引访问权限,只有列表。所以,如果你想要索引访问,你必须使用一个列表(?)@aaron,你只需要这4个(源IP、端口、目的地、端口)值???@morpheus05很抱歉,我对java还是新手,你能给我一些建议吗?你能给我看一下示例代码吗?我可以尝试使用示例代码,这样我也就知道要搜索什么了。@Pratik yup,在使用SET删除重复项后,我需要这4个值,以便我能够正确地输出。@Aaron您可以使用Hashmap,其中键是唯一的,以便满足您的主要要求。我有点困惑:allTCP是一个集合,而不是一个列表。集合没有索引访问权限,只有列表。所以,如果你想要索引访问,你必须使用一个列表(?)@aaron,你只需要这4个(源IP、端口、目的地、端口)值???@morpheus05很抱歉,我对java还是新手,你能给我一些建议吗?你能给我看一下示例代码吗?我可以尝试使用示例代码,这样我也就知道要搜索什么了。@Pratik yup,在使用SET删除重复后,我需要这4个值,以便我能够正确地输出。@Aaron您可以使用Hashmap,其中键是唯一的,以满足您的主要要求。如果OP有重复的路由,我还建议实现equals/hashCode()…@morpheus05也考虑一下。实现
getHash(…)
并将
List
更改为
Hashmap
将从本质上解决重复问题。@Axel Amthor很抱歉,列表的声明出现错误,即List allTcp=new List();以及setSourceIP(src);集合是库函数吗?是否要导入任何库?显示类的声明
NonStandardPortResult
@AxelAmthor
类NonStandardPortResult{private String TCPSourceIP;private String TCPSourcePort;private String TCPDestIP;private String TCPDestPort;public NonStandardPortResult(字符串TCPSourceIP,字符串TCPSourcePort,字符串TCPDestIP,字符串TCPDestPort){setTCPSourceIP(TCPSourceIP);this.TCPSourcePort=TCPSourcePort;this.TCPDestIP=TCPDestIP;this.TCPDestPort=TCPDestPort;}
这个集合就是我尝试过的,这是我以前尝试过的代码如果OP有重复的路由,我还建议实现equals/hashCode()…@morpheus05也考虑一下。实现
getHash(…)
并将
列表
更改为
哈希映射
将从本质上解决重复问题。@Axel Amthor抱歉,列表声明为List allTcp=new List();以及setSourceIP(src)时出错;set是一个库函数吗?我是否需要导入任何库?显示类的声明
NonStandardPortResult
@AxelAmthor
class NonStandardPortResult{private String TCPSourceIP;private String TCPSourcePort;private String TCPDestIP;private String TCPDestPort;public NonStandardPortResult(String TCPSourceIP,String TCPSourcePort,String TCPDestIP,String TCPDestPort){setTCPSourceIP(TCPSourceIP);this.TCPSourcePort=TCPSourcePort;this.TCPDestIP=TCPDestIP;this.TCPDestPort=TCPDestPort;}}
该集合是我尝试的,这是我以前尝试的代码