Чем отличается array от arraylist java

ArrayList vs Array In Java

When you first begin programming in Java and start working with data structures, you will almost certainly come across the phrases array and arrayList. When should an Array or an Arraylist be used? What is the difference between constructing an Array and an ArrayList ? In this post, I’ll explain how these two forms of arrays work and let you chose which to use at the end.

What Is An Array?

An array is a container object that holds a fixed number of single-type values. The length of an array is determined when it is created. Its length is fixed after it is created. It cannot be changed. When you have similar data and want to preserve the same values, you may use an Array . It might be a collection of numbers, names, words, or other data.

Читайте также:  Скрипт создания таблицы php

Creating an Array of size.

Assume we have a list of student names, and we want to build an array to keep them. Let us now see how it works in code.

String[] myFriendsNames = new String[10]; 

You’ll notice that we’ve surrounded the word string in a square bracket <> . It signifies that we have a string-type Array . myFriendsNames is the next item you notice. That is the variable name that takes our friends’ names. By initializing the array , the = produces an array of myFriendsNames objects. Then we give it a 10 size. This indicates that we are stating that the size of myFriendsNames will not be greater than or less than ten. The Array size is fixed. It can not increase nor decrease.

Iniatializing an Array With Values

String[] myFriendsNames = "Nehimiah," "Lekan," "James," "Joy," "Mike," "Janet," "Jacob," "Thomson," "Blessing," "Mike">; 

Note that we don’t have to specify the size. That’s because we defined the size with the values we entered. Because the variables are all 10, the size will be 10. As previously stated, array increases or decreases. An array may hold everything from simple data types like int , double , short , long , and Boolean to things like books, dogs, cats, and tables.

How To Get A Value From An Array

This means that the first element has an index of 0, the second has an index of 1, and so on. We shall supply the array variable name and the index if we want to fetch the entries at index [3] . Let’s try something similar.

System.out.println(myFriendsNames[3]); //Joy 

How to Determine the Length of an Array

System.out.println(myFriendsNames.length) //10 

How To Modify An Element of Array At A Certain Index.

Assume we wish to replace Nehimiah at index 0 with Toby. This may be accomplished by completing the following:

myFriendsNames [0] = "Tobi" //To print it. System.out.println(friendsArray[0]); //Tobi 

What You Can Not Do With An Array.

An array cannot be expanded since its size is set and cannot be modified.
An array element cannot be removed. Because, once again, the size is fixed.

What is An ArrayList

In Java, an ArrayList is used to store a dynamically sized collection of elements. Unlike fixed-size arrays, an ArrayList grows in size automatically as new elements are added to it.

Creating an Arraylist

ArrayListString> myFriendsList = new ArrayList<>(); 

As you can see, we have an ArrayList and a type string that accepts names in the angle bracket <> . The ArrayList is then instantiated using = , angle brackets <> , and parentheses () . You may have noticed that we did not mention the size in the arraylist . This is due to the fact that ArrayList does not have a size provided. It can be increased or decreased by adding or removing values. It expands and contracts on its own. This is one of the reasons why programming with ease is useful with ArrayList .

Initializing an array list with values

ArrayListString> myFriendsList = new ArrayList<>(Arrays.asList("Nehimiah", "Lekan", "James", "Joy", "Mike","Janet", "Jacob", "Thomson", "Blessing", "Mike")); 

The only difference is that we are giving data to the array list, which is indicated by the Arrays.asList in parenthesis. In the parentheses, we pass comma-separated values. This allows us to add and delete values and work around them.

Use Integer Instead Of Int In An ArrayList.

Although an ArrayList can only store objects, you can get around this limitation by utilizing wrapper classes for primitive data types. So, let us suppose we wish to save a student’s exam score. We’ll have to do something similar down below.

ArrayListInteger> StudentsScore = new ArrayList<> (Arrays.asList(65, 77, 66, 89, 98,97, 88, 77, 78, 65)); 

Getting Values From An ArrayList

This indicates that the first element has an index of 0, the second has an index of 1, and so on. We shall supply the ArrayList variable name and the index if we want to obtain the entries at index [1]. We’ll do something similar.

System.out.println(studentsScore.get(1)); //As the value in index 1 will print 77. //77 

How To Determine The Length of An ArrayList

System.out.println(studentsScore.size()) 

An Array differs from an ArrayList in that an array employs a field, whereas an arraylist uses a method call. To access the ArrayList , we utilize the size() function.

How To Insert An Element At The End of An Arraylist

studentsScore.add(34); System.out.println(studentsScore.get(10)); //10 

How To Change An ArrayList Element At A Specific Index

One of our students received an incorrect score. The score must be changed to the proper score, which is at index 0. We may do this by doing the following:

studentsScore.set(0, 89); System.out.println(studentsScore.get(0)); //89 

The set() function was used to provide the index to be changed. Index 0 is the index position we wish to modify in this situation, followed by the value we are bringing in.

How to Remove an Arraylist Element

studentsScore.remove(98); System.out.println(studentsScore.get(4)); //97 //Because 98 is no longer present, we obtained 97 at index 4. 

wrapping up
I was able to explain Array and ArrayList through this article. I explain what an array can and cannot handle, as well as the differences between Array and ArrayList. That, I feel, will inform your decision about which to use. If you want to learn how to loop over an array, please see my earlier post on how to looping through an array and ArrayList. ArrayList simplifies programming by giving you so many opportunities to do anything you want with an array. Do you like working with Arraylist? Please notify me in the comments section.

Источник

Java Blog

1. Размер: массив в Java имеет фиксированный размер. Мы не можем изменить размер массива после его создания. ArrayList имеет динамический размер. Когда мы добавляем элементы в ArrayList, его емкость увеличивается автоматически.

2. Производительность: в Java Array и ArrayList дают разную производительность для разных операций.

add() или get(): добавление или извлечение элемента из массива или объекта ArrayList имеет аналогичную производительность. Это операции с постоянным временем.

resize(): автоматическое изменение размера ArrayList снижает производительность. ArrayList внутренне поддерживается массивом. В resize() временный массив используется для копирования элементов из старого массива в новый массив.

3. Примитивы: массив может содержать как примитивные типы данных, так и объекты. Но ArrayList не может содержать примитивные типы данных. Он содержит только объекты.

4. Итератор: в ArrayList мы используем объект Iterator для обхода элементов. Мы используем цикл for для перебора элементов в массиве.

5. Безопасность типов: Java помогает обеспечить безопасность типов элементов в ArrayList с помощью дженериков. Массив может содержать объекты одного типа класса. Если мы пытаемся сохранить объект другого типа данных в массиве, он генерирует исключение ArrayStoreException.

6. Длина: размер ArrayList можно получить с помощью метода size(). Каждый массив имеет переменную length, которая совпадает с длиной/размером массива.

7. Добавление элементов: в ArrayList мы можем использовать метод add() для добавления объектов. В массиве используется оператор присваивания для добавления элементов.

8. Многомерность: массив может быть многомерным. ArrayList всегда одномерный.

Пример различий между массивами и ArrayList

import java.util.ArrayList; import java.util.Arrays; class Test < public static void main(String args[]) < // Обычный массив int[] arr = new int[2]; arr[0] = 100; arr[1] = 200; System.out.println(arr[0]); // ArrayList // Создаем ArrayList с начальной емкостью 2 ArrayListarrayList = new ArrayList(2); // Добавляем элементы в ArrayList arrayList.add(300); arrayList.add(400); // Доступ к элементам ArrayList System.out.println(arrayList.get(0)); > >

Источник

В чем разница между массивом и ArrayList в Java?

Добрый день господа. Может кто подскажет мне в чем разница между обычным массивом данных, например int[] cats = new int[10] и ArrayList, например ArrayList list = new ArrayList()?

int[] cats = new int[10] в памяти выглядит как непрерывная область память заполненная значениями и равная sizeof(int) * 10. Преимущества — если вы часто обращаетесь и бегаете по коллекции элементов то массивы обеспечат вам максимальную производительность только за счет индексной адресации и меньшего количества кэш-мисов (гуглить свойство локальности данных). Минусы — фиксированный размер, заресайзить можно до не удобно и дорого в плане производительности.

ArrayList же это список, обычный такой вот список. То есть каждый элемент связан друг с другом через указатели. Плюсы — легко добавлять и удалять элементы. Минусы — элементы созданные в разное время могут оказаться в память черти где, что может привести к большому количеству кэш-мисов. Короче траверсинг по списку банально медленнее.

В зависимости от задачи имеет смысла выбирать то или иное решение.

Updated: справедливости ради поправлю себя же. ArrayList это реализация списка на массивах, так что все чуть сложнее. Описанный мной случай — LinkedList, но суть все та же — просто массивы — фиксированный размер, ArrayList — размер динамический.

valiofin

Сергей Протько: Насчёт ArrayList вы не правы. Внутри него как раз-таки находится обычный массив (название ArrayList неспроста). Ну а сам класс — удобная обёртка над массивом с возможностью автоматеческого выделения массива побольше, когда место заканчивается, ну и со всеми методами интерфейса List.
То, что вы описали, это LinkedList.

halogen

Что сходу так вспомнил, хотя могу ошибаться:

Массивы List
Изменение размера нет да
Сложность доступа к элементу всегда O(1) зависит от реализации List
Поддержка семантики «только для чтения» нет (вариант обхода в простых случаях: клонирование массива) да (с использованием read-only-декоратора Collections.unmodifiableList(List))
«Ровная» интеграция в систему типов нет (массивы являются своего рода особым случаем организации объектов; в отличии от .NET не имеет никакого array-типа в качестве базового типа) да
Поддержка примитивных типов да нет («тяжёлые» объекты для примитивов; слегка нивелируется наличием factory-методов типа Integer.valueOf(int); вариант обхода: FastUtils или Trove)
Проверка типа присваиваемых объектов в момент присваивания элемента массива или его инициализации в момент вытягивания элемента списка и интерпретации его на стороне, которая использует список
Взаимные преобразования массив из списка: List.toArray() всегда возвращает новый массив объектов типа Object; List.toArray(T[]) позволяет указать приготовленный буфер для не-примитивов; преобразование в массив примитивов не поддерживается напрямую список из массива: Arrays.asList(T. ) без проблем, если массив является массивом объектов, а не примитивных типов; если массив является массивом примитивов, Arrays.asList() возвращает список с одного элемента, считая входной массив единственным объектом, хотя существуют варианты типа Ints.asList(int[]) из Guava
Возможность узнать общий тип всех элементов да нет (из-за стирания типов; можно узнать тип элемента только по-отдельности при доступе к каждому элементу)
.toString()-представление нет (всегда имеет вид «[T@IDENTITY», где T — тип массива, IDENTITY — уникальный ID объекта; требуется использование Arrays.toString()) да (зависит от реализации, в общем случае «[n1, n2, n3. ]»)
Реализация for-обхода через счётчик для доступа к каждому элементу через итератор с помощью реализации Iterable

Примитивы (int, long, float и т.п.) нельзя хранить в ArrayList. Если будешь добавлять в Collection примитив, то произойдет автобоксинг

Войдите, чтобы написать ответ

Как вернутся из одной активности в предыдущую не пересоздавая ее?

Источник

Оцените статью