2015-05-14 3 views
0

как я могу сделать пользователь, введите номер, который будет сдвигать массив справа 1. массив не может превышать 50. Пожалуйста, помогите, спасибо заранее :)Как добавить элемент в ArrayList

List<Integer> list = new ArrayList<Integer>(1); 
    public void add(int value) { 

     list.add(0, value); 
     for(int i = 0; i < array.length; i++) { 
     list.add(index, value); // how to make the elements shift to the right? 
     if(list.size > 50) { 
      list.remove(50); 
      } 
     } 
    } 
+0

Почему вы хотите добавить себя в свой список? –

+0

как я добавляю в середине списка? – BriannaXD

+1

array! = 'ArrayList' – weston

ответ

0

ArrayList Сменные элементы для вас, поэтому у него есть index, look at this answer.

Когда вы создаете ArrayList: new ArrayList<Integer>(50)50 Dont определить size, определить capacity в ArrayList. При создании пуст и размер 0.

List<Integer> list = new ArrayList<Integer>(50); 


public void add(int value) { 
    if (list.size <= 50) list.remove(list.size() - 1); 

    // inserting element at position 0 shifts other elements 
    list.add(0, value); 

} 
+0

, вы не понимаете параметр конструктора' initialCapacity'. Вы были правы раньше. – weston

+0

ах вау на самом деле? это было так просто? подумал об этом, но я был уверен, что его немного сложнее – BriannaXD

+0

Если он использует массив, а не коллекции как List, он должен обрабатывать это вручную. – ondermerol

-2
private List<Integer> list = new ArrayList<Integer>(51); 

public void add(int value) { 
    list.add(0, value); //other elements are shifted right, you need do nothing else 

    //then limit the list to 50 elements 
    while(list.size() > 50) list.remove(list.size() - 1); 
} 

Я не могу видеть остальную часть кода. Я не знаю, какая длина списка до add, поэтому я просто гарантирую, что это <= 50 после while.

Вы можете указать начальную емкость, если хотите, используйте 51 не 50. Он дает массив начальный размер, который может удерживать ваш 50, плюс 51-й, который находится в списке за короткий период перед удалением.

+0

почему? если вы думаете, что есть больше элементов, используйте [removeRange] (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#removeRange (int,% 20int)) no? –

+0

@JordiCastilla, потому что я не могу видеть остальную часть кода. Я не знаю, какая длина списка перед 'add', поэтому я просто гарантирую, что это <= 50 после. – weston

+0

Почему бы не удалить диапазон? также разве вам не следует определять емкость, чтобы оммитировать использование памяти? –

0
List<Integer> list = new ArrayList<Integer>(50); 

    public void add(int value) { 
    if (list.size() == 50) 
     list.remove(list.size() -1); 

    list.add(value); 
    } 
+0

Спасибо! также вы знаете, как я могу получить последнее значение списка. например, если в списке размером 50 было 11 элементов. как я получу долину 11-го элемента? – BriannaXD

+0

list.size() -1 дает вам индекс последнего элемента. – ondermerol

+0

Вы знаете, что добавляете новые элементы в конец ArrayList, не так ли? не в начале, как об этом спрашивал ОП. – manuelvigarcia

-1
public class TestList { 
    public static void main(String[] args) { 

    ArrayList<Integer> arrlist = new ArrayList<Integer>(4); 

    // use add() method to add elements in the list 
    arrlist.add(15); 
    arrlist.add(4); 
    arrlist.add(5); 

    // adding element 25 at third position 
    arrlist.add(2,25); 

    for (Integer number : arrlist) { 
    System.out.println("List Value = " + number); 
    } 
    } 
} 
+0

Знаете ли вы, как я могу получить последнее значение списка. например, если в списке размером 50 было 11 элементов. как я получу долину 11-го элемента? – BriannaXD

+0

@BriannaXD size() в списке дает вам количество элементов; поскольку индексы начинаются с 0, вы можете 'listName.get (listName.size() - 1)', чтобы получить последнее значение, хранящееся в списке 'listName'. Вы можете просто спросить StackOverflow: [https://stackoverflow.com/a/687842/5108777] – manuelvigarcia

-1

Вставки заданный элемент в указанной позиции в этом списке. Сдвигает элемент в данный момент (если есть) и любые последующие элементы справа (добавляет один к своим индексам). Из этого «http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html»

, поэтому вам нужно просто проверить, не превышает ли размер вашего списка не более 50 и добавит номер в указанный индекс.

List<Integer> list = new ArrayList<Integer>(50); 

    public void add(int value) { 

    if (list.size() == 50) // if the size of the array is 50, then remove the last value. 
    list.remove(list.size() -1); 

    list.add(int index, E element);// you can even choose where position to insert your value. 
    } 
-1

В части конструктора, которую вы определили, является емкость. Минимальная емкость по умолчанию - 10. Вы знаете, что ваш массив не может превышать 50. Существует вероятность того, что должно быть меньше элемента, чем 50. Поэтому сначала оставайтесь частью конструктора пустым.

List<Integer> list = new ArrayList<Integer>(); 
    public void add(int value) { 
     if(list.size() <50) 
      list.add(0,value); 
      else 
      { 
       list.remove(list.size()-1); 
       list.add(0, value); 
      } 
Смежные вопросы