Java - Если условие проверять, содержит ли массив массивов Integer элемент, который больше определенного значения - PullRequest
0 голосов
/ 13 сентября 2018

Я обновил свой код. У меня есть 3 arraylists и в зависимости от условия я хочу обновить значения. Я использую каждый цикл для итерации, но теперь я делаю что-то не так с разрывом, он не сбрасывает / не подбирает следующее значение для типа и длины. Это только сброс имени.

 List <String> columnNameList = new ArrayList <String>();
    List <String> columnTypeList = new ArrayList <String>();
    List <Integer> columnLengthList = new ArrayList <Integer>();
    String result = "";

                    columnNameList.add("Id");
                    columnNameList.add("Name");
                    columnNameList.add("Address");

                    columnTypeList.add("char");
                    columnTypeList.add("varchar");
                    columnTypeList.add("varchar");


                    columnLengthList.add(18);
                    columnLengthList.add(50);
                    columnLengthList.add(10000);




                    outermostloop: for (String name : columnNameList )
                    { 
                        outerloop:  for (String type : columnTypeList)
                        {
                            loop: for (int len : columnLengthList)
                            {

                                if(len > 0 && (!type.equalsIgnoreCase("int") && !type.equalsIgnoreCase("datetime") && !type.equalsIgnoreCase("datetime2")))
                                        {

                                    if(len > 8000 && !(name.equalsIgnoreCase("Id")) && (type.equalsIgnoreCase("varchar")))
                                    {
                                        result =  name + type + "(max) ";
                                        System.out.println("if len > 8000 && name not id and type is varchar " + result);  
                                        // O/P expected : Address  varchar(max)
                                    }

                                    else
                                    {
                                        String finalres = name + type + "("+ len +") ";
                                        System.out.println("No conversion " + finalres);    
                                        /* O/P expected : Id char(18)
                                                         Name varchar(50) 
                                         */

                                    }

                                        }

                                break outerloop;


                            } 

                        }  

                    }

But what I am getting with above logic :
No conversion Id char (18) 
No conversion Name char (18) 
No conversion Address char (18)

Ответы [ 3 ]

0 голосов
/ 13 сентября 2018

Это может помочь:

public static void main(String[] args) throws Exception {

    ArrayList<Integer> ar1 = new ArrayList<>();
    ar1.add(1);
    ar1.add(2);
    ar1.add(3);
    ar1.add(4);
    ar1.add(5);

    int particular_value = 3;

    for (int i : ar1) {
        if (i > particular_value)
            System.out.println("Value " + i + " is greater than " + particular_value);
    }

}
0 голосов
/ 13 сентября 2018

Вы должны перебрать список.Использование потоков или расширенного цикла for или общего цикла for.Например:

List <Integer> columnLengthList = new ArrayList <Integer>();
        columnLengthList.add(8001);
        columnLengthList.add(7000);

        for (Integer eachElement: columnLengthList) {
            if (eachElement > 8000) {
                // run these 
            } else {
                // run these
            }
        }
0 голосов
/ 13 сентября 2018

Вы должны перебирать элементы List, пока не найдете элемент больше, чем 8000.

С Stream s вы можете написать его с помощью:

if (columnLengthList.stream().anyMatch(i -> i > 8000)) {

} else {

}
...