вам нужно добавить класс [System.Serializable]
в PlayerItem
, например:
using System;
[System.Serializable]
public class PlayerItem {
public string playerId;
public string playerLoc;
public string playerNick;
}
List
- упорядоченная последовательность элементов, тогда как Set
- это отдельный список неупорядоченных элементов (спасибо, Quinn Taylor ).
Упорядоченный набор (также известный как последовательность). Пользователь этого интерфейса имеет точный контроль над тем, где в списке вставлен каждый элемент. Пользователь может получить доступ к элементам по их целочисленному индексу (позиция в списке) и искать элементы в списке.
< blockquote>Коллекция, которая не содержит повторяющихся элементов. Более формально множества не содержат пары элементов e1 и e2 таких, что e1.equals (e2) и не более одного нулевого элемента. Как видно из его имени, этот интерфейс моделирует математическую абстрактную абстракцию.
Set: набор не может иметь повторяющиеся элементы в своих коллекциях. это также неупорядоченная коллекция. Чтобы получить доступ к данным из Set, требуется использовать только Iterator, и для него невозможно получить индекс. Он в основном используется всякий раз, когда требуется сбор уникальности.
Список: Список может иметь повторяющиеся элементы, с естественным упорядоченным по мере его вставки. Таким образом, могут быть получены данные на основе индекса или итератора. Он широко используется для хранения коллекции, которая должна получать доступ по индексу.
Список:
Set:
Как мы говорим о интерфейсах Java, почему бы не посмотреть на Javadoc?!
List
- упорядоченный набор (последовательность), который обычно позволяет дублировать Set
a - это коллекция, которая не содержит повторяющихся элементов, порядок итераций может быть гарантирован реализацией Нет упоминания об отсутствии порядка в отношении наборов: это зависит от осуществление.
LinkedHashSet
с левой стороны, если позже код будет основываться на заказе. Я использую только Set
, если я действительно использую его как один, так как вы не можете предположить, что базовая реализация - это LinkedHashSet
или такая, она может быть сегодня, но завтра код изменится, и он не сработает.
– Christophe Roussy
30 November 2015 в 17:44
ТЕМА Имя: Список VS Set
Я только что прошел через самый важный раздел Java под названием Collections Framework. Я решил поделиться с вами небольшими знаниями о Коллекциях. Список, набор, карта являются наиболее важной темой. Итак, давайте начнем с List и Set.
Разница между List и Set:
AbstractList
, где в качестве Set является классом коллекции, который extends AbstractSet
, но оба реализуют интерфейс Collection. NullPointerException
. Set
не обязательно поддерживают порядок вставки. (Хотя SortedSet
использует TreeSet
, а LinkedHashSet
поддерживает порядок вставки). Vector
, тогда как в интерфейсе Set нет никакого унаследованного класса listIterator()
может быть только используется для циклического перемещения элементов в классах классов, тогда как мы можем использовать метод iterator () для доступа к элементам Set class Что-нибудь еще можно добавить? Пожалуйста, дайте мне знать.
Спасибо.
List
и Set
являются интерфейсами, которые также имеют «базовые». реализаций в виде абстрактного класса (который вы упомянули). Кроме того, # 3 является полностью неточным , так как большинство наборов допускают нулевые значения (но зависят от реализации). Я не понимаю # 5 и # 7, а для # 6 Vector
не является устаревшим, но просто синхронизирован и не рекомендуется для использования, кроме случаев, когда требуется синхронизация.
– glen3b
16 June 2014 в 19:14
Концептуально мы обычно ссылайтесь на неупорядоченную группировку, которая позволяет дублировать как сумку и не позволяет дублировать набор.
Как и ответ, поскольку SET не имеет повторяющегося значения, а List может. Разумеется, порядок - это еще одно отличие от них.
Это может быть не тот ответ, который вы ищете, но JavaDoc классов коллекций на самом деле довольно описательный. Копировать / вставить:
Упорядоченная коллекция (также известная как последовательность). Пользователь этого интерфейса имеет точный контроль над тем, где в списке вставлен каждый элемент. Пользователь может обращаться к элементам по их целым индексам (позиция в списке) и искать элементы в списке.
В отличие от наборов, списки обычно позволяют дублировать элементы. Более формально списки обычно допускают пары элементов e1 и e2, такие как e1.equals (e2), и они обычно допускают множество нулевых элементов, если они разрешают нулевые элементы вообще. Не исключено, что кто-то может пожелать реализовать список, который запрещает дублирование, путем исключения исключений во время выполнения, когда пользователь пытается их вставить, но мы ожидаем, что это использование будет редкими.
blockquote>
Вот ясный пример с groovy. Я создаю набор и список. то я пытаюсь сохранить 20 случайно генерируемых значений в каждом списке. сгенерированное значение может находиться в диапазоне от 0 до 5
s = [] as Set
l = []
max = 5
print "random Numbers :"
20.times{
e = (int)Math.random()*max
s << e
l << e
print "$e, "
}
println "\n"
println "Set : $s "
println "list : $l
Результат:
random Numbers: 4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3
Set: [4, 1, 0, 2, 3]
list: [4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]
Вы можете видеть, что разница в том, что:
Набор представляет собой неупорядоченную группу различных объектов - не допускается дублирование объектов. Он обычно реализуется с использованием хеш-кода вставляемых объектов. (Конкретные реализации могут добавить упорядочение, но сам интерфейс Set не делает.)
Список - упорядоченная группа объектов, которая может содержать дубликаты. Он может быть реализован с помощью ArrayList
, LinkedList
и т. Д.
Все классы List
поддерживают порядок вставки. Они используют разные реализации на основе производительности и других характеристик (например, ArrayList
для скорости доступа к определенному индексу, LinkedList
для простого поддержания порядка). Поскольку ключ отсутствует, дубликаты разрешены.
Классы Set
не поддерживают порядок вставки. Они могут необязательно налагать определенный порядок (как и на SortedSet
), но обычно имеют определенный по реализации порядок, основанный на некоторой хеш-функции (как в HashSet
). Поскольку к Set
s обращается ключ, дубликаты не допускаются.
Разница, основанная на следующих точках
1) Duplicity: List позволяет дублировать элементы. Любое количество повторяющихся элементов может быть вставлено в список, не затрагивая одни и те же существующие значения и их индексы. Набор не позволяет дублировать. Set и все классы, которые реализуют интерфейс Set, должны иметь уникальные элементы.
2) Null values: List позволяет любое количество нулевых значений. Set позволяет использовать одиночное нулевое значение.
3) Заказ: список и все его классы реализации поддерживают порядок вставки. Set не поддерживает какой-либо заказ; еще несколько его классов сортируют элементы в таком порядке, как LinkedHashSet, который поддерживает элементы в порядке размещения.
List: List позволяет дублировать элементы и значения NULL. Простой поиск с использованием соответствующего индекса элементов, а также отображение элементов в порядке размещения. Пример: (связанный список)
import java.util.*;
public class ListExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> l=new LinkedList<Integer>();
l.add(001);
l.add(555);
l.add(333);
l.add(888);
l.add(555);
l.add(null);
l.add(null);
Iterator<Integer> il=l.iterator();
System.out.println(l.get(0));
while(il.hasNext()){
System.out.println(il.next());
}
for(Integer str : l){
System.out.println("Value:"+str);
}
}
}
Выход:
1 1 555 333 888 555 null null Значение: 1 Значение: 555 Значение: 333 Значение: 888 Значение: 555 Значение: null Значение: null
Set: Set не позволяет дублировать элементы и допускает одиночное значение null. Он не будет поддерживать какой-либо порядок отображения элементов. Только TreeSet
отобразит в порядке возрастания.
Пример: (TreeSet)
import java.util.TreeSet;
public class SetExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<String> set = new TreeSet<String>();
try {
set.add("hello");
set.add("world");
set.add("welcome");
set.add("all");
for (String num : set) {
System.out.println( num);
}
set.add(null);
} catch (NullPointerException e) {
System.out.println(e);
System.out.println("Set doesn't allow null value and duplicate value");
}
}
}
Выход:
приветствие приветствия world java.lang. NullPointerException Set не разрешает нулевое значение и дублирующее значение
Набор не может содержать повторяющиеся элементы во время просмотра списка. Список (на Java) также подразумевает порядок.
Duplicity
Set не позволяет дублировать. Набор и все классы, которые реализуют интерфейс Set, должны иметь уникальные элементы. Список позволяет дублировать элементы. Любое количество повторяющихся элементов может быть вставлено в список, не затрагивая одни и те же существующие значения и их индексы.
Нулевые значения
List allows any number of null values.
Set allows single null value at most
Порядок
Список и все его классы реализации поддерживают порядок вставки. Set не поддерживает какой-либо порядок, еще немногие из его классов сортируют элементы в таком порядке, как LinkedHashSet поддерживает элементы в порядке вставки и TreeSet (элементы поддерживают по возрастанию по умолчанию)
реализация классов
List: ArrayList, LinkedList
Set: HashSet, LinkedHashSet, TreeSet
1.List позволяет дублировать значения и устанавливать do'nt разрешить дубликаты
2.List поддерживает порядок, в который вы вставили элементы в список. Set doesnt поддерживает порядок. 3.List - упорядоченная последовательность элементов, тогда как Set - отличный список неупорядоченных элементов.
Заказ ... список имеет порядок, набор нет.
╔═══════════════════╦══════════════════════╦═════════════════════════════╗
║ ║ List ║ Set ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║ Duplicates ║ YES ║ NO ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║ Order ║ ORDERED ║ DEPENDS ON IMPLEMENTATION ║
╠═══════════════════╬══════════════════════╬═════════════════════════════╣
║ Positional Access ║ YES ║ NO ║
╚═══════════════════╩══════════════════════╩═════════════════════════════╝
Список
Установите
Список Vs Set
1) Set не позволяет дублировать. Список позволяет дублировать. На основе реализации Set он также поддерживает порядок вставки.
, например: LinkedHashSet
. Он поддерживает порядок вставки. Пожалуйста, обратитесь к нажмите здесь
2) содержит метод. По характеру набора это даст лучшую производительность для доступа. Лучше всего его o (1). Но List имеет проблему с производительностью для вызова contains
.
Привет. Многие ответы уже даны. Позвольте мне указать некоторые моменты, которые пока не упоминаются:
RandomAccess
который является интерфейсом маркера для более быстрого доступа. Ни один из реализаций списка не делает этого. ListIterator
, который поддерживает итерацию в обоих направлениях. Set использует Iterator, который поддерживает только 1-тактную итерацию Set<E>
и List<E>
используются для хранения элементов типа E
. Разница в том, что Set
хранится неупорядоченным способом и не допускает повторяющихся значений. List
используется для хранения элементов упорядоченным способом и позволяет дублировать значения. Элементы
Set
не могут быть доступны по позиции индекса, а к элементам List
можно получить доступ к позиции индекса.
Set:
Не может иметь повторяющихся значений. Порядок зависит от реализации. По умолчанию он не упорядочен. Невозможно получить доступ по индексу
. Список:
Может иметь повторяющиеся значения. Упорядочено по умолчанию. Может иметь доступ по индексу
Несколько примечательных достоинств различий между списком и множеством в Java приведены следующим образом:
1) Фундаментальное различие между List и Set в Java позволяет дублировать элементы. Список на Java допускает дубликаты, а Set не позволяет дублировать. Если вы вставляете дубликат в Set, он заменит старое значение. Любая реализация Set в Java будет содержать только уникальные элементы.
2) Еще одно существенное различие между List и Set в Java - это порядок. Список - это упорядоченная коллекция, а Set - неупорядоченная коллекция. Список поддерживает порядок вставки элементов, означает, что любой элемент, который вставлен до этого, будет идти ниже индекса, чем любой элемент, который вставлен после. Набор в Java не поддерживает какой-либо порядок. Хотя Set предоставляет другую альтернативу SortedSet, которая может хранить элементы Set в определенном порядке сортировки, определенные методами Comparable и Comparator для объектов, хранящихся в Set.
3) Популярная реализация интерфейса List в Java включает ArrayList, Vector и LinkedList , В то время как популярная реализация интерфейса Set включает в себя HashSet, TreeSet и LinkedHashSet.
Довольно ясно, что если вам нужно поддерживать порядок вставки или объект, и ваша коллекция может содержать дубликаты, чем List, это способ пойти. С другой стороны, если ваше требование состоит в том, чтобы поддерживать уникальную коллекцию без каких-либо дубликатов, чем Set, это путь.