Flume:在设置时间拦截器时,header为什么同步到event里?

问题遇到的现象和发生背景

@Override
public Event intercept(Event event) {

    // 将日志拦下,取出header里面的key , 取出body里面的对应的日志时间;  将ts的值赋值给header的key  timestamp
    // 1 获取header头
    Map<String, String> headers = event.getHeaders();

//为了调试输出
// headers.forEach((k, v) ->
// System.out.println("header的头信息 K:" + k + "V:" + v)
// );

    // 2 获取body中的ts
    byte[] body = event.getBody();
    String log = new String(body, StandardCharsets.UTF_8);
   System.out.println("body的信息=" + log);
    JSONObject jsonObject = JSONObject.parseObject(log);

    String ts = jsonObject.getString("ts");
    System.out.println("================================");
    // 3 将ts赋值给timestamp
    headers.put("timestamp", ts);
 headers.forEach((k, v) ->
           System.out.println("更换过header的头信息 K:" + k + "V:" + v)
   );
   System.out.println("================================");
    Map<String, String> headers1 = event.getHeaders();
   headers1.forEach((k, v) ->
            System.out.println("再次获得更换过得header的头信息 K:" + k + "V:" + v)
  );
    return event;
}
问题相关代码,请勿粘贴截图

上面header主要执行了下面代码
Map<String, String> headers = event.getHeaders();
headers.put("timestamp", ts);
return event;
主要执行了这三行
event没有调用setHeader方法
直接返回,header却被更新了,麻烦问下这是怎么个逻辑?

运行结果及报错内容

下面是输出数据部分
以下自己调试输出的结果
第一次获取header信息
header的头信息 K:topic V:topic_log
header的头信息 K:partition V:0
header的头信息 K:offset V:38176
header的头信息 K:timestamp V:1641725767672

更改header信息后输出的结果

更换过header的头信息 K:topicV:topic_log
更换过header的头信息 K:partitionV:0
更换过header的头信息 K:offsetV:38176
更换过header的头信息 K:timestampV:1592132167000

没有调用event.setHeader()方法
直接再次执行
Map<String, String> headers1 = event.getHeaders();
头信息竟然被改了 为什么?

================================
再次获得更换过得header的头信息 K:topicV:topic_log
再次获得更换过得header的头信息 K:partitionV:0
再次获得更换过得header的头信息 K:offsetV:38176
再次获得更换过得header的头信息 K:timestampV:1592132167000

时间戳已经由1641725767672更换为1592132167000为什么?

我的解答思路和尝试过的方法
我想要达到的结果

请问底层是怎么实现的?

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。

好好想了下,应该是内存地址的引用,所以改变值是直接改变引用地址里的值,所以再获取还是那个地址,此时改变了!