JavaRush /جاوا بلاگ /Random-UR /جاوا میں اری لسٹ

جاوا میں اری لسٹ

گروپ میں شائع ہوا۔
ترقی کرتے وقت، یہ اندازہ لگانا اکثر مشکل ہوتا ہے کہ کس سائز کی صفوں کی ضرورت ہوگی۔ لہذا، پروگرام کے چلنے کے دوران میموری کو متحرک طور پر مختص کرنے کا فنکشن ہر پروگرامنگ زبان کے لیے ضروری ہے۔ ایک متحرک صف وہ ہے جس کا سائز پروگرام کے عمل کے دوران تبدیل ہوسکتا ہے۔ جاوا میں، اس مقصد کے لیے ایک ArrayList کلاس ہے ۔

ArrayList کلاس کیا ہے؟

ArrayList فہرست انٹرفیس کا ایک تغیر پذیر سرنی عمل درآمد ہے، مجموعہ فریم ورک کا حصہ، جو java.utils پیکیج میں موجود فہرست (یا متحرک صف) کے لیے ذمہ دار ہے۔ یہ کلاس تمام اختیاری فہرست کی کارروائیوں کو نافذ کرتی ہے اور فہرست کو ذخیرہ کرنے کے لیے استعمال ہونے والی صف کے سائز کو کنٹرول کرنے کے طریقے فراہم کرتی ہے۔ ArrayList ایک متحرک صف کے خیال پر مبنی ہے۔ یعنی، عناصر کو شامل کرنے اور ہٹانے کی صلاحیت، جبکہ ضرورت کے مطابق اضافہ یا کمی۔

ArrayList کیا ذخیرہ کرتا ہے؟

صرف حوالہ کی قسمیں، کوئی بھی اشیاء، بشمول فریق ثالث کی کلاسز۔ سٹرنگز، آؤٹ پٹ اسٹریمز، دیگر مجموعے۔ ریپر کلاسز کو ڈیٹا کی قدیم اقسام کو ذخیرہ کرنے کے لیے استعمال کیا جاتا ہے۔

اری لسٹ کنسٹرکٹرز

  1. ArrayList()

    ابتدائی داخلی صف کی گنجائش کے ساتھ خالی کنسٹرکٹر = 10۔

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

    زاویہ بریکٹ میں ذخیرہ شدہ اقدار کی قسم کی نشاندہی کرنے کا مشورہ دیا جاتا ہے۔ مندرجہ بالا مثال میں - String.

  2. ArrayList(مجموعہ <? توسیع E> c)

    کنسٹرکٹر ایک اور مجموعہ کو قبول کرتا ہے، منظور شدہ مجموعہ کے عناصر کے ساتھ ایک نئی صف تیار کرتا ہے:

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

    نئی فہرست میں عناصر کی ترتیب اصل کی طرح ہوگی۔

  3. ArrayList(int ابتدائی اہلیت)

    کنسٹرکٹر پیرامیٹر اندرونی صف کے ابتدائی سائز کی قدر ہے۔

    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(مجموعہ <? توسیع E> مجموعہ)

    مجموعہ کے تمام عناصر کو فہرست میں اس ترتیب سے شامل کرتا ہے جس ترتیب سے وہ مجموعہ میں ظاہر ہوتے ہیں۔

  • addAll(int انڈیکس، مجموعہ <? توسیع E> مجموعہ)

    Добавление всех элементов 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