Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 07.09.2018, 17:23   #1
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 466
Репутация: 10
По умолчанию ArrayList

Здравствуйте!
Вот этот код не мой. Просто он подходит для примера чтобы задать вопрос.
Код:

import java.util.ArrayList;
import java.util.Scanner; 
 
public class Scan {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // создаём объект класса Scanner
        String line;
        String str;
        
        ArrayList<String> list = new ArrayList<String>();
        
        // Введем 10 значений
        for (int i = 0; i < 10; i++){
            
            // Запрашиваем и проверяем значение
            System.out.print("Введите значение: ");
            
            line = sc.nextLine(); // Работаем с введенной строкой       
            
            if(line.equals("Первое")){
                System.out.println("Расчет один");
                line = line + " Бобик";
                System.out.println("Добавляем в лист еще одного Бобика");
                list.add(line);
            }
            else if(line.equals("Второе")){
                System.out.println("Расчет два");
                line = line + " Тузик";
                System.out.println("Добавляем в лист еще одного Тузика");
                list.add(line);
            }
            else {
                System.out.println("Ничего не добавляем");
            }
        }
        
        
        for (int k = 0; k < list.size(); k++) {
            str = list.get(k);
            if(str.equals("Первое Бобик")){
                System.out.println("Расчет над элементом массива I");
            }
            if(str.equals("Второе Тузик")){
                System.out.println("Расчет над элементом массива II");
            }
        }   
       
    }
}

Там есть строка
Код:

list.add(line);

Т.е. в ячейку помещается string. Я хочу управлять вставлением в ячейку. Т.е. в зависимости от условий и обстоятельств я хочу вставлять значение строки либо в ту либо в иную ячейку.
Тупо не знаю как выглядит синтаксис с ArrayList для такого хода.
Код:

list(n).add(line);

Не пойдёт, пытался. (где n переменная.)
Как надо? В книге нет такого в сети тоже не нашел.
KAMLS вне форума   Ответить с цитированием
Старый 07.09.2018, 17:25   #2
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 466
Репутация: 10
По умолчанию

Нашел блин опять когда уже спросил)))
list.add(n,line);
KAMLS вне форума   Ответить с цитированием
Старый 07.09.2018, 17:47   #3
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 466
Репутация: 10
По умолчанию

А есть такое чтобы сразу удалять определённое количество ячеек ArrayList пусть даже и с потерей данных?
А то я пока знаю только удаление по одной ячейке remove(i).
KAMLS вне форума   Ответить с цитированием
Старый 07.09.2018, 17:52   #4
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,295
Репутация: 2073

icq: 216409213
По умолчанию

Код:

subList(,).clear()

__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 07.09.2018, 18:03   #5
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 466
Репутация: 10
По умолчанию

А если мне надо просто укоротить массив на n. Без премудрости типа от и до.
subList(n).clear()
так пойдет?
KAMLS вне форума   Ответить с цитированием
Старый 07.09.2018, 18:11   #6
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,295
Репутация: 2073

icq: 216409213
По умолчанию

Конечно, нет. У сабЛист два параметра. Либо возвращайте саблист, как новый, либо удаляйте не нужные элементы.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 07.09.2018, 18:16   #7
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 466
Репутация: 10
По умолчанию

Сделал так.
Код:

 mass.subList(0,(n+1)).clear();

Удаление в цикле многократное поэтому надо завязывать на переменную которая тоже меняется.
Но теперь встала другая задача, как скопировать один лист в другой, чтобы у того куда копируют не менялся размер, т.е. происходила запись поверху с потерей данных.
Есть такая возможность?
Я пока не нашел но ищу. Если подскажете для ускорения дела, то спасибо. Хотя и так уже спасибо))
KAMLS вне форума   Ответить с цитированием
Старый 07.09.2018, 18:21   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,295
Репутация: 2073

icq: 216409213
По умолчанию

Не понятно, что вы хотите сделать. Вот есть первый лист 1 2 3 и второй 4 5 6 7 8. Что будет при

Цитата:
Сообщение от KAMLS Посмотреть сообщение
скопировать один лист в другой, чтобы у того куда копируют не менялся размер, т.е. происходила запись поверху с потерей данных
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 07.09.2018, 18:25   #9
KAMLS
Форумчанин
 
Регистрация: 09.04.2017
Сообщений: 466
Репутация: 10
По умолчанию

нет ну понятно я хочу копировать из равного в равный. Для чего и искал как в большем удалять некоторое количество ячеек.
Это я гоняю попарное уменьшение из первоначального списка.
Начал делать в массивах, а они в джаве костяные, не меняются как в С# через смену значения переменной которой обозначался размер массива.
Пока сделал с листами так:
Код:

for(int i=0; i<n; i++)
            {
            mass.add(i,mass1.get(i));
            }

Но было бы здорово менять баш на баш.
Первый массив 1,2,3 второй 4,5,6
Бах и первый стал 4,5,6
KAMLS вне форума   Ответить с цитированием
Старый 07.09.2018, 18:28   #10
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,295
Репутация: 2073

icq: 216409213
По умолчанию

mass = new ArrayList<>(mass1); или mass = mass1.clone();
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ArrayList ISV-777 Общие вопросы по Java, Java SE, Kotlin 2 06.12.2011 20:05
c# arraylist world12_tk Помощь студентам 2 09.08.2011 10:19
ArrayList musomoh Общие вопросы .NET 9 11.05.2010 02:03
ArrayList jona Общие вопросы по Java, Java SE, Kotlin 7 30.04.2010 13:45
arraylist WOWka777 Общие вопросы .NET 4 11.04.2010 19:05


01:21.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru