java LinkedHashSet检索值

时间:2016-03-06 14:38:11

标签: java arrays

我正在使用这个LinkedHashSet,我从互联网上复制以删除重复项。

Set<List<String>> sls=new LinkedHashSet<List<String>>();

这就是我传入其中的内容。

sls.add(Arrays.asList(new String[]{TCPSourceIP.get(x), TCPSrcPort.get(x), TCPDestIP.get(x), TCPDestPort.get(x)}));

显示的结果是:

[172.16.139.194, 57799, 60.28.217.190, 7788]
[54.240.226.64, 443, 60.28.217.190, 61595]
[54.240.226.64, 443, 172.16.130.150, 61595]
[172.16.134.70, 40193, 172.16.130.150, 443]
[172.16.136.7, 58792, 31.13.77.5, 5222]
[31.13.77.5, 443, 31.13.77.5, 40193]
[172.16.134.70, 38332, 31.13.77.5, 443]

现在的问题是我要回到LinkedHashSet中的每个值,例如:
172.16.139.194存储到另一个名为Array1的数组中,57799存储到另一个名为Array2的数组中.60.28 .217.190存储到另一个名为Array3的数组中,存储到另一个名为Array4的数组中 54.240.226.64存储到另一个名为Array1的数组中,443存储到另一个名为Array2的数组中,60.28.217.190存储到另一个名为Array3的数组中,61595存入另一个名为Array4的数组中,所以上。 我试着用

Object[] objArray = sls.toArray();
for(int index=0; index < objArray.length ; index++){
String [] commasplitSrc = objArray[index].split(",");

但分裂对此无效。
我还有其他办法吗?我只想获取LinkedHashSet中的每个值,以便我可以理想地打印输出 输出示例:
IP 172.16.139.194正在使用端口5788向端口57799发送数据包到60.28.217.190。

2 个答案:

答案 0 :(得分:0)

使用两个嵌套的forEach循环,第一个循环遍历集合,第二个迭代遍历列表。您可以在第二个forEach循环中打印每个元素或执行任何操作,您可以访问列表中的单个元素。

答案 1 :(得分:0)

也许这就是你想要的:

for (List<String> list : sls) {
    System.out.println(MessageFormat.format("IP {0} is sending packet with port {1} to {2} with port {3}.", list.toArray()));
}

但是,作为旁注,您将逗号分隔的字符串与List的Java表示混淆。

第一个是这样的:

"172.16.139.194, 57799, 60.28.217.190, 7788"

后者是你提到的:

[172.16.139.194, 57799, 60.28.217.190, 7788]

这就是您无法通过String.split方式检索所需值的原因。