Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
0 / 0 / 1
Регистрация: 06.03.2015
Сообщений: 75

Добавление в середину ArrayList Java

07.11.2015, 10:49. Показов 2848. Ответов 1
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть класс Clerk, в себе он содержит ArrayList объектов типа Supplicant
Java
1
2
public final class Clerk {
  ArrayList<Supplicant> queueSup = new ArrayList<>();
в каждого объекта типа Supplicant есть приоритет
Java
1
2
3
public class Supplicant {
      int Priority;
 }
В классе Clerk я разрабатываю функцию добавления нового посетителя(Supplicant ) в ArrayList по приоритету. Т.е при добавлении нового посетителя если у него приоритет выше чем у кого-то из списка, то этот посетитель(которого мы добавляем) стает перед ним. Например у меня в списке есть Иван с приоритетом 5, Юрий с приоритетом - 2, я добавляю Андрея с приоритетом 3, то должно быть: Иван, Андрей, Юрий.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void QueueUp(Supplicant sup_obj){
      int index=0;
      if(queueSup.size() == 0){queueSup.add(sup_obj); System.out.println(sup_obj.Name+" самый первый");}
      else{
          for(int i=0;i<queueSup.size();++i){
              if(sup_obj.Priority > queueSup.get(i).Priority) {index=i; // узнаю индекс вставки
                    System.arraycopy(queueSup, index, queueSup, index+1, queueSup.size() - index);
                    queueSup.set(index,sup_obj);break;}
              else {queueSup.add(sup_obj); break;}
          }
      }
      for(int i=0;i<queueSup.size();++i){
          System.out.println(queueSup.get(i).Name);
      }
      }
Функция выводит некорректный результат:
Иван самый первый - здесь правильно ведь я его добавил самого первого
Иван - 3 тоже верно
вот отсюда уже некорректно
Иван - 3
Юрий-1
Иван - 3
Юрий - 1
Aндрей -2

Добавлено через 9 минут
Чуток переделал метод
Java
1
2
3
4
5
6
7
8
9
10
11
public void QueueUp(Supplicant sup_obj){
      int index=0;
      if(queueSup.size() == 0){queueSup.add(sup_obj); System.out.println(sup_obj.Name+" самый первый");}
      else{
          for(int i=0;i<queueSup.size();++i){
              if(sup_obj.Priority > queueSup.get(i).Priority) {index=i;
                    System.arraycopy(queueSup, index, queueSup, index+1, queueSup.size() - index); // Компилятор ругаеться на эту строчку
                    queueSup.set(index,sup_obj);break;}
          } queueSup.add(sup_obj);
      }
      }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2015, 10:49
Ответы с готовыми решениями:

Как представить элементы java.ArrayList содержащие другие java.ArrayList в виде XML - XSL?
Здравствуйте Вопрос: Подскажите пожалуйста чайнику, как можно представить элементы java.ArrayList содержащие другие java.ArrayList...

Аналоги java.util.ArrayList<java.util.ArrayList<Integer>>
Подскажите, пожалуйста, аналоги java.util.ArrayList&lt;java.util.ArrayList&lt;Integer&gt;&gt;, которые 1. либо работают быстрее 2. либо потребляют...

Arraylist добавление параметров
По замыслу код должен создавать случайных игроков, и генерировать для них Items состоящие из случайных предметов. но по факту каждому...

1
6 / 6 / 7
Регистрация: 15.04.2011
Сообщений: 26
07.11.2015, 13:20
Если я правильно понял, то все, что вам надо знать для решения - это перегрузка метода add для ArrayList:
Java
1
list.add(int index, Type element)
Этот метод работает довольно быстро, так как в ArrayList копирования массива реализовано нативно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2015, 13:20
Помогаю со студенческими работами здесь

Добавление метода get в ArrayList
Добавление метода get в ArrayList, который по индексу добавит элемент в коллекцию. Волнует вопрос реализации

Добавление элемента в коллекцию ArrayList
Всем привет. Возник такой вопрос. Есть две коллекции oldCollection и newCollection(код снизу). В oldCollection идет порядок элементов: 1,...

Добавление одномерного массива в ArrayList
Недавно столкнулся с проблемой, добавляя массивы в ArrayList ArrayList&lt;int&gt; arr = new ArrayList&lt;int&gt;(); Random rnd...

Сортировка ArrayList в Java
Добрый день, мне нужна помощь в реализации следующего метода: public ArrayList&lt;Integer&gt;union(ArrayList&lt;Integer&gt;...

Колекция в ArrayList<e> в Java
Доброе время суток!!! Я создал функцию возвращающий коллекцию обект. Вот теперь мне нужно ввести ее на консоль. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru