记录java中多字段分组
package cn.mw;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
class NetworkConnection {
private String srcIp;
private String dstIp;
private int srcPort;
private int dstPort;
public NetworkConnection() {
}
public NetworkConnection(String srcIp, String dstIp, int srcPort, int dstPort) {
this.srcIp = srcIp;
this.dstIp = dstIp;
this.srcPort = srcPort;
this.dstPort = dstPort;
}
public String getSrcIp() {
return srcIp;
}
public void setSrcIp(String srcIp) {
this.srcIp = srcIp;
}
public String getDstIp() {
return dstIp;
}
public void setDstIp(String dstIp) {
this.dstIp = dstIp;
}
public int getSrcPort() {
return srcPort;
}
public void setSrcPort(int srcPort) {
this.srcPort = srcPort;
}
public int getDstPort() {
return dstPort;
}
public void setDstPort(int dstPort) {
this.dstPort = dstPort;
}
// 省略构造函数和其他方法
// Getter 和 Setter 方法
}
public class ConnectionGrouper {
public static void main(String[] args) {
// 假设你有一个 List<NetworkConnection> connections
List<NetworkConnection> connections = Arrays.asList(
new NetworkConnection("192.168.1.1", "192.168.2.1", 8080, 80),
new NetworkConnection("192.168.1.2", "192.168.2.2", 8081, 81),
new NetworkConnection("192.168.1.3", "192.168.2.3", 8081, 81),
new NetworkConnection("192.168.1.4", "192.168.2.4", 8081, 81),
new NetworkConnection("192.168.1.5", "192.168.2.5", 8081, 81),
new NetworkConnection("192.168.1.6", "192.168.2.6", 8081, 81)
);
// 使用Java Stream API进行分组
Map<String, List<String>> groupedConnections = connections.stream()
.flatMap(connection -> Stream.of(
new AbstractMap.SimpleEntry<>("src_ip", String.valueOf(connection.getSrcIp())),
new AbstractMap.SimpleEntry<>("dst_ip", String.valueOf(connection.getDstIp())),
new AbstractMap.SimpleEntry<>("src_port", String.valueOf(connection.getSrcPort())),
new AbstractMap.SimpleEntry<>("dst_port", String.valueOf(connection.getDstPort()))
))
.filter(entry -> !entry.getValue().equals("null"))
.collect(Collectors.groupingBy(
Map.Entry::getKey,
Collectors.mapping(Map.Entry::getValue, Collectors.toList())
));
// 输出结果
groupedConnections.forEach((key, value) -> System.out.println(key + ": " + value));
}
}
分类:
java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了