Рубрики
Без рубрики

Список Java – Список на Java

Список Java. Пример списка Java. java.util.Интерфейс списка. Массив Java для перечисления. Список Java в массив. добавить, добавить все, подсписок, установить, содержит, итератор, размер, удалить

Автор оригинала: Pankaj Kumar.

Список Java – это упорядоченная коллекция. Список Java – это интерфейс, который расширяет интерфейс коллекции. Список Java обеспечивает контроль над позицией, в которую вы можете вставить элемент. Вы можете получить доступ к элементам по их индексу, а также к элементам поиска в списке.

Список Java

Некоторые из важных моментов в списке Java следующие;

  • Интерфейс списка Java является членом платформы коллекций Java.
  • Список позволяет добавлять повторяющиеся элементы.
  • Список позволяет иметь “нулевые” элементы.
  • Интерфейс списка содержит множество методов по умолчанию в Java 8, например, заменить все, сортировать и разделитель.
  • Индексы списков начинаются с 0, как и массивы.
  • Список поддерживает дженерики, и мы должны использовать его, когда это возможно. Использование обобщений со списком позволит избежать исключения ClassCastException во время выполнения.

Диаграмма классов списка Java

Интерфейс списка Java расширяет интерфейс коллекции. Интерфейс сбора расширяет итерационный интерфейс. Некоторые из наиболее часто используемых классов реализации списков-это ArrayList, LinkedList, Вектор, стек, CopyOnWriteArrayList. Абстрактный список предоставляет базовую реализацию интерфейса списка, чтобы уменьшить усилия по реализации списка.

Методы списка Java

Некоторые из полезных методов списка Java являются;

  1. int size() : чтобы получить количество элементов в списке.
  2. логическое значение isEmpty() : для проверки, пуст список или нет.
  3. логическое значение содержит(объект o) : Возвращает значение true, если этот список содержит указанный элемент.
  4. Итератор итератор() : Возвращает итератор по элементам в этом списке в правильной последовательности.
  5. Объект[] toArray() : Возвращает массив, содержащий все элементы в этом списке в правильной последовательности
  6. логическое добавление(E e) : Добавляет указанный элемент в конец этого списка.
  7. логическое удаление(Объект o) : Удаляет первое вхождение указанного элемента из этого списка.
  8. логическое значение retainAll(Коллекция c) : Сохраняет только элементы в этом списке, содержащиеся в указанной коллекции.
  9. void clear() : Удаляет все элементы из списка.
  10. E get(индекс int) : Возвращает элемент в указанной позиции в списке.
  11. Набор E(индекс int, элемент E) : Заменяет элемент в указанной позиции в списке указанным элементом.
  12. ListIterator ListIterator() : Возвращает итератор списка по элементам в списке.
  13. Список Подсписка(int fromIndex, int toIndex) : Возвращает представление части этого списка между указанным fromIndex, включительно, и toIndex, эксклюзивно. Возвращенный список подкрепляется этим списком, поэтому неструктурные изменения в возвращенном списке отражаются в этом списке, и наоборот.

Некоторые из методов по умолчанию, добавленных в список в Java 8, являются;

  1. по умолчанию пустая замена(оператор UnaryOperator) : Заменяет каждый элемент этого списка результатом применения оператора к этому элементу.
  2. сортировка пустоты по умолчанию(Компаратор E> c) : Сортирует этот список в соответствии с порядком, заданным указанным компаратором. E> c)
  3. : Сортирует этот список в соответствии с порядком, заданным указанным компаратором. Разделитель по умолчанию разделитель()

Массив Java для перечисления

Мы можем использовать класс Arrays, чтобы получить представление массива в виде списка. Однако мы не сможем внести какие-либо структурные изменения в список, это вызовет java.lang.Исключение UnsupportedOperationException. Поэтому лучший способ-использовать цикл for для создания списка путем итерации по массиву. Ниже приведен простой пример, показывающий, как правильно преобразовать массив java в список.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ArrayToList {

	public static void main(String[] args) {
		
		String[] vowels = {"a","e","i","o","u"};
		
		List vowelsList = Arrays.asList(vowels);
		System.out.println(vowelsList);
		
		/**
		 * List is backed by array, we can't do structural modification
		 * Both of the below statements will throw java.lang.UnsupportedOperationException
		 */
		//vowelsList.remove("e");
		//vowelsList.clear();
				
		//using for loop to copy elements from array to list, safe for modification of list
		List myList = new ArrayList<>();
		for(String s : vowels){
			myList.add(s);
		}
		System.out.println(myList);
		myList.clear();
	}

}

Выберите любой из вышеперечисленных методов, исходя из требований вашего проекта.

Список Java в массив

Простой пример, показывающий правильный способ преобразования списка в массив.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListToArray {

	public static void main(String[] args) {

		List letters = new ArrayList();

		// add example
		letters.add("A");
		letters.add("B");
		letters.add("C");
		
		//convert list to array
		String[] strArray = new String[letters.size()];
		strArray = letters.toArray(strArray);
		System.out.println(Arrays.toString(strArray)); //will print "[A, B, C]"
	}

}

Сортировка списка Java

Существует два способа сортировки списка. Мы можем использовать класс Collections для естественной сортировки или использовать метод сортировки по списку() и использовать наш собственный компаратор для сортировки. Ниже приведен простой пример сортировки списков java.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class ListSortExample {

	public static void main(String[] args) {
		
		List ints = new ArrayList<>();
		Random random = new Random();
		for (int i = 0; i < 10; i++) ints.add(random.nextInt(1000));
		
		//natural sorting using Collections class
		Collections.sort(ints);
		System.out.println("Natural Sorting: "+ints);
		
		//My custom sorting, reverse order
		ints.sort((o1,o2) -> {return (o2-o1);});
		System.out.println("Reverse Sorting: "+ints);
	}
}

Пример выходных данных приведен ниже. Поскольку я использую Random для генерации элементов списка, каждый раз он будет отличаться.

Natural Sorting: [119, 273, 388, 450, 519, 672, 687, 801, 812, 939]
Reverse Sorting: [939, 812, 801, 687, 672, 519, 450, 388, 273, 119]

Java Перечисляет Общие Операции

Наиболее распространенными операциями, выполняемыми в списке java, являются добавление, удаление, установка, очистка, размер и т.д. Ниже приведен простой пример списка java, показывающий использование распространенных методов.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class ListExample {

	public static void main(String args[]) {
		List vowels= new ArrayList();
		
		//add example
		vowels.add("A");
		vowels.add("I");
		
		//let's insert E between A and I
		vowels.add(1,"E");
		System.out.println(vowels);
		
		List list = new ArrayList();
		list.add("O");list.add("U");
		
		//appending list elements to letters
		vowels.addAll(list);
		System.out.println(vowels);
		
		//clear example to empty the list
		list.clear();
		
		//size example
		System.out.println("letters list size = "+vowels.size());
		
		//set example
		vowels.set(2, "E");
		System.out.println(vowels);
		
		//subList example
		vowels.clear();vowels.add("E"); vowels.add("E");vowels.add("I"); vowels.add("O");
		list = vowels.subList(0, 2);
		System.out.println("letters = "+vowels+", list = "+list);
		vowels.set(0, "A");
		System.out.println("letters = "+vowels+", list = "+list);
		list.add("U");
		System.out.println("letters = "+vowels+", list = "+list);
		
		
	}

}

Вывод приведенного выше примера программы java-списка является;

[A, E, I]
[A, E, I, O, U]
letters list size = 5
[A, E, E, O, U]
letters = [E, E, I, O], list = [E, E]
letters = [A, E, I, O], list = [A, E]
letters = [A, E, U, I, O], list = [A, E, U]

Итератор списка Java

Ниже приведен простой пример, показывающий, как перебирать список в java.

package com.journaldev.examples;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListIteratorExample {

	public static void main(String[] args) {

		List list = new ArrayList<>();
		for(int i=0; i<5; i++) list.add(i);
		
		Iterator iterator = list.iterator();
		
		//simple iteration
		while(iterator.hasNext()){
			int i = (int) iterator.next();
			System.out.print(i + ", ");
		}
		System.out.println("\n"+list);
		
		//modification of list using iterator
		iterator = list.iterator();
		while(iterator.hasNext()){
			int x = (int) iterator.next();
			if(x%2 ==0) iterator.remove();
		}
		System.out.println(list);
		
		//changing list structure while iterating
		iterator = list.iterator();
		while(iterator.hasNext()){
			int x = (int) iterator.next(); //ConcurrentModificationException here
			if(x==1) list.add(10);
		}
	}

}

Вывод вышеупомянутой программы итератора списков java является;

0, 1, 2, 3, 4, 
[0, 1, 2, 3, 4]
[1, 3]
Exception in thread "main" java.util.ConcurrentModificationException
	at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:901)
	at java.util.ArrayList$Itr.next(ArrayList.java:851)
	at com.journaldev.examples.ListIteratorExample.main(ListIteratorExample.java:34)

Это все краткое описание списка на Java. Я надеюсь, что эти примеры списков Java помогут вам начать работу с программированием сбора списков.