如何通过匹配其中一个字段而不是通过java中的索引从arrayList中获取对象

oipij1gg  于 2023-05-21  发布在  Java
关注(0)|答案(2)|浏览(99)

早上好。
目前我有一个名为Account的ArrayList,它有几个参数,其中有ArrayList类型的字段(attribIdenCtaUsos),我想要的是获得这个ArrayList Account的某些参数,如图所示:

PostpaidAccount类

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class PostpaidAccount {

@JsonProperty("billingAccountNumber")
Integer billingAccountNumber;
@JsonProperty("accountId")
Integer accountId;
@JsonProperty("arcoID")
Integer arcoID;
@JsonProperty("initialDate")
Timestamp initialDate;
@JsonProperty("productId")
Integer productId;
@JsonProperty("platformId")
Integer platformId;
@JsonProperty("accountStatusId")
Integer accountStatusId;
@JsonProperty("accountStatusInternal")
String accountStatusInternal;
@JsonProperty("accountStatus")
String accountStatus;
@JsonProperty("internalAccountStatusDescription")
String internalAccountStatusDescription;
@JsonProperty("productName")
String productName;
@JsonProperty("marketName")
String marketName;
@JsonProperty("atribIdenCtaUsos")
private List<T_ATRIB_IDEN_CTA_USO> atribIdenCtaUsos;

T_ATRIB_IDEN_CTA_USO类

@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class T_ATRIB_IDEN_CTA_USO {

    @JsonProperty("abrevt_atrib_cta_uso")
    private String abrevt_atrib_cta_uso;
    @JsonProperty("valor")
    private String valor;
    @JsonProperty("fecha_inicio")
    private String fecha_inicio;
    @JsonProperty("fecha_fin")
    private String fecha_fin;
    @JsonProperty("id_atributo_cta_uso")
    private long id_atributo_cta_uso;
}

响应Json如下所示:

现在从下面的Json,我需要从ArrayList中提取atribIdenCtaUsos我需要提取在abrevt_atrib_cta_uso字段的valor等于TLF的地方找到的值字段,它总是这样,然而,情况是这个值并不总是在位置1,它可以通过getIndex(1)获得。值,但它可以在位置0,为此,我需要一种方法能够通过valor abrevt_atrib_cta_uso等于TLF来过滤该ArrayList

nkoocmlb

nkoocmlb1#

如果abrevt_atrib_cta_uso的值总是唯一的,你可以将atribIdenCtaUsos声明为Map<String, T_ATRIB_IDEN_CTA_USO>,并使用abrevt_atrib_cta_uso作为键。那么您的查找就是atribIdenCtaUsos.get("TLF");

kcwpcxri

kcwpcxri2#

流式处理元素,过滤出你想要的元素,并获取它的值:

String v = myObj.getAtribIdenCtaUsos().stream()
  .filter(obj -> obj.getAbrevtAtribCtaUso().equals("TLF"))
  .map(obj -> obj.getValor())
  .findFirst()
  .orElse(null);

相关问题