2016-05-15 3 views
0

je la classe ci-dessous nommé BrokerInvoice contenant les variables membres suivantsfiltrer les données de la liste si les attributs sont nuls elle-même

public class BrokerInvoice 
{ 
private List<BrokerInvoiceLineItem> lineItems; 

//and its corresponding setters and getters 

} 

nous avons la classe ci-dessous java nommé BrokerInvoiceLineItem comme indiqué ci-dessous qui a une relation entre la classe supérieure nommée brokerInvoice que la classe ci-dessous est ajoutée dans la classe comme une liste

public class BrokerInvoiceLineItem { 

    private String brokerRefId; 
    private double notional; 
    private Date dealDate; 


    //corresponding setters and getters 

    } 

maintenant dans un morceau de code que je reçois l'objet de la classe mère qui est de la facture de courtier lui-même

BrokerInvoice brokerInvoice1 = abc.findrty(brokerIdLong , serType); 

maintenant l'objet ci-dessus brokerInvoice1 contiennent les entrées de LineItems qui est de type BrokerInvoiceLineItem aussi, donc je veux modifier la liste LineItems nommés tels que la liste je reçois à l'intérieur de l'objet brokerInvoice1 comme la condition est qu'il y ait être une sorte de pré-vérification que si les attributs de liste lineitems nommés brokerRefId, notional, dealDate, dealDate sont NULL alors cette entrée ne devrait pas être dans la liste des éléments de ligne elle-même

alors s'il vous plaît aviser comment puis-je filtrer ma liste de lignes résidant à l'intérieur de brokerInvoice1 objet tel qu'il ne devrait pas y avoir d'entrée d'attribut null à l'intérieur de la lineitemslist si ces attributs sont vides

J'utilise Java 5 s'il vous plaît conseiller sur la façon d'atteindre ce que je peux obtenir le même par java5

Répondre

1

Si vous êtes sur Java 8, vous pouvez utiliser removeIf de Collection:

listItems.removeIf(i -> i.getBrokerRefId() == null || i.getDealDate() == null); 

Cela suppose que vous voulez muter la liste. Si vous préférez ne pas changer le listItems, et seulement obtenir une nouvelle liste sans les mauvais éléments, vous pouvez utiliser stream filtering:

List<BrokerInvoiceLineItem> newList = listItems.stream() 
    .filter(i -> i.getBrokerRefId() != null) 
    .filter(i -> i.getDealDate() != null) 
    .collect(Collector.toList()); 

avis, que la version de flux conserve les éléments qui correspondent le prédicat et l'removeIf un fait le contraire, de sorte que les prédicats sont inversés.

+0

Merci beaucoup parfaite explication que je demande java 5 amusant vous indiquer sur la façon d'y parvenir avec Jasper un 5 –

0

Java 5:

private List<BrokerInvoiceLineItem> newLineItems = new ArrayList<BrokerInvoiceLineItem>(); 


if (brokerInvoice1 != null && brokerInvoice1.lineItems != null){ 
for(BrokerInvoiceLineItem brokerInvoiceLineItem : brokerInvoice1.lineItems){ 
    if(brokerInvoiceLineItem.getBrokerRefId() != null && brokerInvoiceLineItem.getDealDate() == null){ 
     newLineItems.add(brokerInvoiceLineItem) 
    } 
} 

}