我正在使用这个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。
答案 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
方式检索所需值的原因。