首页 > 解决方案 > 如何防止 HashSet 更改我从 List 分配的数组顺序?

问题描述

我试图实现的是我的 Set 与我的 List 具有相同的顺序,当我将值从 List 分配给 Set 时,它正在改变。这是我所做的:

// in here my array still showing same as my submited front end
List<ShipmentAddressGroupingDtDto> submitedShipmentAddressGroupingDtDto = shipmentAddressGroupingDto.getShipmentAddressGroupingDtDto();

//in here my array start changing, it's not the same order again as my object above
        Set<ShipmentAddressGroupingDtDto> setShipmentAddressGroupingDtDto = new HashSet(submitedShipmentAddressGroupingDtDto);
        List<ShipmentAddressGroupingDtDto> shipmentAddressGroupingDtDto = new ArrayList<ShipmentAddressGroupingDtDto>(setShipmentAddressGroupingDtDto);

这是我对 submitedShipmentAddressGroupingDtDto 的值:

      [
        "id": 0,
        "address": "Jl. Imam Bonjol",
        "isActive": true,
        "partnerShipmentId": 1
      ],
      [
        "id": 0,
        "address": "Jl. Imam Bonjol",
        "isActive": true,
        "partnerShipmentId": 2
      ],
      [
        "id": 0,
        "address": "Jl. Imam Bonjol",
        "isActive": true,
        "partnerShipmentId": 4
      ],
      [
        "id": 0,
        "address": "Jl. Imam Bonjolx",
        "isActive": true,
        "partnerShipmentId": 7
      ]

我在调试模式下看到的,在我的setShipmentAddressGroupingDtDto中是这样的:

      [
        "id": 0,
        "address": "Jl. Imam Bonjol",
        "isActive": true,
        "partnerShipmentId": 2
      ],
      [
        "id": 0,
        "address": "Jl. Imam Bonjolx",
        "isActive": true,
        "partnerShipmentId": 7
      ],
      [
        "id": 0,
        "address": "Jl. Imam Bonjol",
        "isActive": true,
        "partnerShipmentId": 1
      ],
      [
        "id": 0,
        "address": "Jl. Imam Bonjol",
        "isActive": true,
        "partnerShipmentId": 4
      ]

如何防止设置我的列表排序?或者如果我不能阻止这种情况,我该如何将它作为我提交的值进行排序?

标签: javaarraysarraylisthashset

解决方案


您可以使用LinkedHashSet来维护您放入其中的元素的顺序。


推荐阅读