在java中自定义多个if语句

时间:2016-05-18 16:29:28

标签: java

我有以下if语句检查哪些看起来不正确,因为它们是多个如果检查请告知我如何减少它们,因为从技术上看也是多次检查已经完成

String incomingProduct = brokerInvoice.getProduct();
if (incomingProduct!= null &&  incomingProduct.equalsIgnoreCase("CD") ) {
    brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("CD"));
}
if (incomingProduct!= null &&  incomingProduct.equalsIgnoreCase("COMMODITY") ) {
    brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("CQD"));
}
if (incomingProduct!= null &&  incomingProduct.equalsIgnoreCase("DITY") ) {
    brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("DITY"));
}
if (incomingProduct!= null &&  incomingProduct.equalsIgnoreCase("ITY") ) {
    brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("ITY"));
}
if (incomingProduct!= null &&  incomingProduct.equalsIgnoreCase("CO") ) {
    brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("CO"));
}
if (incomingProduct!= null &&  incomingProduct.equalsIgnoreCase(MODITY") ) {
    brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get("MODITY"));
}

请告知我是否可以使用地图数据结构

4 个答案:

答案 0 :(得分:0)

String[] products = new String[6]

products[0] = "CD";
products[1] = "COMMODITY";
products[2]= "DITY";
products[3] = "IT";
products[4] = "CO";
products[5] = "MODITY";

for(int i = 0; i < products.length; i++){
    if (incomingProduct!= null &&  incomingProduct.equalsIgnoreCase(products[i]) ) {
        brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get(products[i]));
    }
}

这应该有效并且更具可读性

答案 1 :(得分:0)

最佳变体:

if (incomingProduct!= null) {
        switch(incomingProduct.toLowerCase()){
             case "cd":  doSomethingWithProduct(incomingProduct.toUpperCase());
                     break;
             case "commodity":  doSomethingWithProduct(incomingProduct.toUpperCase());
                     break;
        }
    }

doSomethingWithProduct(String name){
    brokerInvoice.setSourceSystem((String)configuration.getConfiguration().get(name));
}

答案 2 :(得分:0)

假设您可以避免检查incomingProduct是否在{"CD", "CO", "COMMODITY", "DITY", "ITY", "MODITY"},您应该写一下:

String incomingProduct = brokerInvoice.getProduct();    
if (incomingProduct != null) {    
    brokerInvoice.setSourceSystem((String) configuration.getConfiguration().get(incomingProduct));
}

否则你可以使用doge的答案。

答案 3 :(得分:0)

假设"COMMODITY" - &gt; "CQD"案件是故意的:

private static final TreeMap<String, String> MAPPINGS = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
static {
    MAPPINGS.put("CD", "CD");
    MAPPINGS.put("COMMODITY", "CQD");
    MAPPINGS.put("DITY", "DITY");
    MAPPINGS.put("ITY", "ITY");
    MAPPINGS.put("CO", "CO");
    MAPPINGS.put("MODITY", "MODITY");
}

void doThings() {
    String incomingProduct = brokerInvoice.getProduct();
    if (incomingProduct != null) {
        String configKey = MAPPINGS.get(incomingProduct);
        if (configKey != null) {
            brokerInvoice.setSourceSystem((String) configuration.getConfiguration().get(configKey));
        }
    }
}