JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ ArrayList

جاوا ۾ ArrayList

گروپ ۾ شايع ٿيل
جڏهن ترقي ڪري رهيو آهي، اهو اڪثر ڏکيو هوندو آهي ته اڳڪٿي ڪرڻ لاء ڪهڙي سائيز جي صفن جي ضرورت پوندي. تنهن ڪري، متحرڪ طور تي ميموري کي مختص ڪرڻ جو فعل جڏهن پروگرام هلندو آهي هر پروگرامنگ ٻولي لاء ضروري آهي. هڪ متحرڪ صف آهي جنهن جي سائيز پروگرام جي عمل دوران تبديل ٿي سگهي ٿي. جاوا ۾، هن مقصد لاء هڪ ArrayList ڪلاس آهي .

ArrayList ڪلاس ڇا آهي؟

ArrayList فهرست جي انٽرفيس جو هڪ ميوٽيبل ايري پليپشن آهي، جيڪو ڪليڪشن فريم ورڪ جو حصو آهي، جيڪو java.utils پيڪيج ۾ موجود لسٽ (يا متحرڪ صف) جو ذميوار آهي. هي طبقو سڀني اختياري لسٽ جي عملن کي لاڳو ڪري ٿو ۽ فهرست کي ذخيرو ڪرڻ لاءِ استعمال ڪيل صف جي سائيز کي ڪنٽرول ڪرڻ لاءِ طريقا مهيا ڪري ٿو. ArrayList هڪ متحرڪ صف جي خيال تي ٻڌل آهي. يعني، عناصر کي شامل ڪرڻ ۽ ختم ڪرڻ جي صلاحيت، جڏهن ته ضرورت مطابق وڌائي يا گھٽائي.

ArrayList اسٽور ڇا ڪندو آهي؟

صرف حوالن جا قسم، ڪي به شيون، بشمول ٽئين پارٽي طبقن. اسٽرنگ، ٻاھر نڪرڻ وارو سلسلو، ٻيو مجموعو. ريپر ڪلاس استعمال ڪيا ويا آھن پراڻي ڊيٽا جي قسمن کي ذخيرو ڪرڻ لاء.

ArrayList Constructors

  1. ArrayList()

    شروعاتي اندروني صف جي گنجائش سان خالي ڪنسٽرڪٽر = 10.

    ArrayList<String> list = new ArrayList<>();

    اهو مشورو ڏنو ويو آهي ته زاويه بریکٹ ۾ محفوظ ڪيل قدرن جي قسم کي ظاهر ڪيو وڃي. مٿين مثال ۾ - String.

  2. ArrayList (مجموعي <? extensions E> c)

    تعمير ڪندڙ هڪ ٻيو مجموعو قبول ڪري ٿو، منظور ٿيل مجموعن جي عناصر سان هڪ نئون صف ٺاهي ٿو:

    ArrayList<String> list2 = new ArrayList<>(list);

    نئين لسٽ ۾ عناصر جي ترتيب اصل وانگر ساڳيو هوندو.

  3. ArrayList (Initiative Capacity)

    تعمير ڪندڙ پيٽرولر اندروني صف جي شروعاتي سائيز جي قيمت آهي.

    ArrayList<String> list2 = new ArrayList<>(10000);

    جيڪڏهن هيٺيون ArrayList خلا کان ٻاهر هلندو آهي جڏهن نوان عناصر شامل ڪيا ويندا آهن، هڪ نئين وڏي صف ٺاهي ويندي آهي ۽ ڊيٽا ان ۾ نقل ڪئي ويندي آهي. جيڪڏهن توهان اڳ ۾ ڄاڻو ٿا جڏهن توهان جو ڪوڊ لکندو ته عناصر جو هڪ وڏو تعداد صف ۾ پروسيس ڪيو ويندو، توهان کي بهتر ڪرڻ جي مقصدن لاء وڏي قيمت بيان ڪرڻ گهرجي.

ArrayList طريقا

    هيٺ ڏنل مکيه طريقا آهن ArrayList.

  • شامل ڪريو (اي اي)

    لسٽ جي آخر ۾ نئون عنصر شامل ڪري ٿو. واپسي boolean- قدر ( سچ - ڪاميابي، غلط - شامل نه ڪيو ويو):

    ArrayList<String> list = new ArrayList<>();
    list.add("Hello");
  • شامل ڪريو (انٽ انڊيڪس، اي عنصر)

    elementپوزيشن انڊيڪس تي هڪ عنصر شامل ڪري ٿو . شامل ڪرڻ وقت، سڀني عناصر کي مخصوص انڊيڪس جي ساڄي طرف منتقل ڪيو ويو آھي 1 پوزيشن ساڄي طرف:

    list.add(0, "Amigo");

    تمام ڪارائتو آهي جڏهن توهان کي ڪنهن فهرست ۾ ڪٿي به هڪ عنصر داخل ڪرڻ جي ضرورت آهي، پر ArrayList جي شروعات ۽ وچ ۾ بار بار داخل ڪرڻ جي عملن لاءِ شايد تمام سٺو انتخاب نه هجي - توهان کي ڏسڻ گهرجي LinkedList.

  • addAll(مجموعو <? extensions E> مجموعو)

    مجموعي جي سڀني عناصرن کي ھڪڙي فهرست ۾ شامل ڪري ٿو جيئن اھي مجموعن ۾ نظر اچن ٿا.

  • addAll(int index, collection <? extensions E> collection)

    Добавление всех элементов collection в список начиная с индекса index. При этом все элементы сдвинутся вправо на количество элементов в списке collection:

    ArrayList<String> secondList = new ArrayList<>();
    secondList.addAll(list);
    System.out.println("First addition: " + secondList);
    secondList.addAll(1, list);
    System.out.println("Second addition in the middle: " + secondList);

    Вывод:

    
    Первое добавление: [Amigo, Hello]
    Второе добавление в середину: [Amigo, Amigo, Hello, Hello]

    Методы addAll() также возвращают boolean-результат добавления элементов.

  • clear()

    Удаление всех элементов из списка.

  • clone()

    returns an object-копию массива:

    ArrayList<String> copyOfSecondList = (ArrayList<String>) secondList.clone();
    secondList.clear();
    System.out.println(copyOfSecondList);

    Вывод:

    
    [Amigo, Amigo, Hello, Hello]

    Следует обратить внимание, что метод clone() возвращает Object, так что после его вызова потребуется сделать приведение к необходимому классу.

    При клонировании создается новый независимый an object. В примере показано, How очищение клонированного an object не сказалось на составе его клона.

  • contains(Object o)

    Проверка наличие an object в списке, возвращает boolean-meaning.

    System.out.println(copyOfSecondList.contains("Hello"));
    System.out.println(copyOfSecondList.contains("Check"));

    Вывод:

    
    true
    false
  • ensureCapacity(int minCapacity)

    Увеличивает размер внутреннего массива, чтобы в него поместилось количество элементов, переданных в minCapacity. Если массив достаточно вместителен, ниHowие преобразования не производятся.

    Этот метод полезен, когда возникает потребность вместить большое количество элементов в несколько итераций. Например, при создании списка емкость его внутреннего массива — 10. При загрузке данных по сети они обрабатываются асинхронно порциями и результаты помещаются в массив. Если ожидается доставка 10 000 элементов, может быть неэффективно просто добавлять эти данные каждый раз: достаточно будет в начале обработки вызвать метод ensureCapaciry(10000) и записывать туда данные по мере необходимости.

  • forEach(Consumer<? super E> action)

    Обработать в цикле ArrayList можно стандартными способами, цикл for:

    // First way
    for(int i = 0; i< secondList.size(); i++) {
       System.out.println(secondList.get(i));
    }
    И цикл for-each:
    // Second way
    for(String s : secondList) {
       System.out.println(s);
    }

    В классе ArrayList есть метод для обработки каждого element, который называется также, forEach. В качестве аргумента передается реализация интерфейса Consumer, в котором нужно переопределить метод accept():

    secondList.forEach(new Consumer<String>() {
       @Override
       public void accept(String s) {
           System.out.println(s);
       }
    });

    Вывод:

    
    Amigo
    Amigo
    Hello
    Hello

    Метод accept принимает в качестве аргумента очередной элемент того типа, который хранит в себе ArrayList. Пример для Integer:

    ArrayList<Integer> integerList = new ArrayList<>();
    integerList.forEach(new Consumer<Integer>() {
       @Override
       public void accept(Integer integer) {
           System.out.println(integer);
       }
    });

    Метод action() будет выполнен для каждого element.

  • get(int index)

    returns элемент, который расположен в указанной позиции списка.

    Если index < 0 or index >= максимального количества элементов списка, будет выброшено исключение IndexOutOfBoundsException.

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

  • indexOf(Object o)

    Метод возвращает индекс первого вхождения element в списке. Если element не существует в списке, метод вернет -1.

  • isEmpty()

    Метод возвращает true, если список пустой, false в обратном случае.

    Если в списке содержатся только элементы null, метод вернет false. Иными словами, null элементы также учитываются этим методом.

  • iterator()

    returns итератор для списка для последующего использования в цикле or при любой другой обработке.

    Итератор для ArrayList — fail-fast. Это значит, что если коллекция изменится во время итерации, будет выброшено исключение ConcurrentModificationException. Подробнее об fail-fast и его противоположности fail-safe можно почитать здесь.

  • lastIndexOf(Object o)

    Функционал метода похож на indexOf(), отличие в том, что возвращается индекс последнего element в списке.

    Если элемент не найден, также возвращает -1.

  • remove(int index)

    Удаление element в указанной позиции индекса. После удаления сдвигает все элементы влево для заполнения освободившегося пространства.

    Если index<0 or >= количество элементов списка, будет выброшено исключение IndexOutOfBoundsException. В результате метод возвращает элемент, который был удален.

  • remove(Object o)

    Метод удаляет из списка переданный элемент o. Если элемент присутствует в списке, он удаляется, а все элементы смещаются влево. Если элемент существует в списке и успешно удален, метод возвращает true, в обратном случае — false.

  • removeAll(Collection<?> c)

    Если необходимо удалить несколько элементов, не стоит делать это в цикле по условию: гораздо удобнее и безопаснее воспользоваться методом removeAll(). Он принимает коллекцию элементов, которая будет удалена из списка.

    Коллекция должна содержать элементы того же типа, которые хранит целевой список. В обратном случае будет выброшен ClassCastException. Метод вернет true, если список был изменен в результате вызова метода.

  • set(int index, E element)

    Замена element в указанной позиции index на переданный element. Индекс также должен быть больше нуля и меньше индекса последнего element, иначе будет выброшено исключение IndexOutOfBoundsException.

  • size()

    Лучший способ (практически единственный) для того, чтобы узнать размер массива.

  • sort(Comparator<? super E> c)

    Сортировка списка по заданному правилу. Правило сортировки представляет собой реализованный интерфейс Comparator с переопределенным методом compareTo().

    Переопределение нужно, если коллекция содержит an objectы собственного класса. При работе со стандартными классами (Integer, String и так далее) переопределение compareTo() требуется только для нестандартной сортировки.

  • toArray()

    Превращает список в фиксированный массив. Обратите внимание, что метод возвращает массив an objectов (Object[]). Если необходимо привести список в массив an objectов определенного типа, в качестве параметра в метод можно передать массив, куда будут перемещены элементы списков.

    Пример:

    String[] array = new String[secondList.size()];
    secondList.toArray(array);
    for(int i = 0; i< array.length; i++) {
       System.out.println(array[i]);
    }

    Вывод:

    
    Amigo
    Amigo
    Hello
    Hello
جاوا ۾ ArrayList جا طريقا JavaRush ڪورس ۾ سکيا ويا آھن. پهرين واقفيت جاوا سنٽيڪس جي جستجو جي ستين سطح تي ٿيندي آهي، ليڪچر “ArrayList Class” ۾ . ساڳئي سطح تي ڪمن جا مجموعا آهن - هڪ ۽ ٻه ، جن ۾ توهان کي ArrayList طريقا استعمال ڪرڻ گهرجن، ArrayList ۽ generics سان ڪم ڪرڻ جا اضافي مثال ڏنل آهن، ۽ ArrayList ۽ LinkedList جي وچ ۾ فرق بيان ڪيو ويو آهي. اهو مطالعو جو هڪ وسيع موضوع آهي، تنهن ڪري، هڪ يا ٻي صورت ۾، جاوا ۾ Arraylist (هن طبقي جا طريقا صرف علم جي پوري جسم جو حصو آهن، جنهن ۾ شامل ٿيڻ جي قابل آهي) هيٺين سطحن تي ڪورس ۾ واپس ڪيو ويو آهي. تربيت جو - بنيادي، مجموعو، ملائي ٿريڊنگ. اسان يقين رکون ٿا ته روزانه ڪوڊ لکڻ جي مشق پروگرامنگ ۾ ڪاميابي جي بنيادي ڪنجي آهي. تنهن ڪري، JavaRush جو 80٪ عملي ڪمن، مني پروجيڪٽ، ۽ راند جي ڪمن تي مشتمل آهي. اهو سڀ ڪجهه سوين ڪلاڪن جو ڪوڊنگ آهي جيڪو توهان جي مهارت کي بهتر بنائڻ ۾ مدد ڪندو.

وڌيڪ پڙهڻ لاء لنڪس

  1. متحرڪ صفن بابت تفصيلي مضمون ، يا وڌيڪ واضح طور تي ArrayList۽ بابت LinkedList، جيڪي جاوا ٻولي ۾ پنهنجو ڪردار ادا ڪن ٿا.
  2. ArrayList مان عناصر کي هٽائڻ بابت هڪ مضمون .
  3. آري لسٽ سان گڏ ڪم ڪرڻ تي ليڪچر آريگرام ۽ تصويرن ۾ .
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION