Nano Hash - криптовалюты, майнинг, программирование

Исключение IndexOutOfBounds Sublist Arraylist

Работа над приведенным ниже кодом для изменения сообщений HL7 и добавления некоторых шестнадцатеричных символов в зависимости от написанного мной условия.

Копирование строки из текстового поля и преобразование ее в Arraylist, чтобы я мог просмотреть ее, чтобы найти имена сегментов HL7. Для этого я получаю подсписок из Arraylist. Но при работе с приведенным ниже кодом я получаю исключение IndexOutOf Bounds. Я знаю, что при поиске Sublist мой поиск превышает размер Arraylist. Просто нужен совет, чтобы проверить, не выходит ли значение Sublist за пределы размера Arraylist.

Ниже приведен код для того же:

public String validateMsg(String msg) {
    msg = msg.replaceAll("[^a-zA-Z0-9] && ^[|&^~#.$]", null);

    msg = msg.replaceAll("\\s", "");
    msg = msg.replaceAll("\u000b", "");

    String strArray[] = msg.split("");

    ArrayList<String> msgArray = new ArrayList<String>(
            Arrays.asList(strArray));

    msgArray.add(0, "\u000b");

    for (int i = 0; i + 3 < msgArray.size(); i++) {

        String tmpSeg = "";

        StringBuilder sb = new StringBuilder();

        for (String tmpSeg1 : msgArray.subList(i, i + 3)) {
            sb.append(tmpSeg1).append("");
        }

        tmpSeg = sb.toString();

        if (tmpSeg.equals("EVN") && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("MRG")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PID")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PD1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PV2")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("OBR")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ORC")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("OBX")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("SPM")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZFM")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("GT1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZEP")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZVT")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("AL1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("FT1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("IN1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("IN2")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("IN3")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("NK1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ACC")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PR1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("UB1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("UB2")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PD1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("RXO")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("RXE")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("RXR")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("RXC")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("RXO")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ROL")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("DB1")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("DRG")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PDA")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("NTE")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ODS")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ODT")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("SCH")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZDS")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZIN")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZAL")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("NPU")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZAB")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZAU")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZEP")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZEV")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZRC")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZAT")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("ZIV")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("TXA")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("MFI")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("MFE")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("STF")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PRA")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PID")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("AIS")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("AIG")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("AIL")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("AIP")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("RRA")
                && !msgArray.get(i - 1).contains("\r")
                || tmpSeg.equals("PV1")
                && !msgArray.get(i - 1).contains("\r")) {
            msgArray.add(i, "\r");
            // break;
        }

    }

    msgArray.add(msgArray.size(), "\r");
    msgArray.add(msgArray.size(), "\u001C\r");

    StringBuilder strBuilder = new StringBuilder();
    for (String str : msgArray) {
        strBuilder.append(str).append("");
    }

    return strBuilder.toString();
}

Пожалуйста, помогите мне с некоторым советом, чтобы мое условие проверяло, не пересекаю ли я размер ArrayList.

Заранее спасибо.


Ответы:


1

попробуйте следующий код,

   if((i+3)<= msgArray.size()){
    for(String tmpSeg1:msgArray.subList(i, i+3))
        {
            sb.append(tmpSeg1).append("");
        }
    }else{

     System.out.println("Exceeds size");
    }
14.01.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..