检索插入顺序中的 LinkedHashSet 元素并将它们保存到局部变量中
Retrieve LinkedHashSet elements in the insertion order and save them to local variables
我有一个 linkedhashset,我需要从中获取与插入元素相同的元素。
要检索,我无法按准确的插入顺序获取元素。
将 linkedHashset 转换为 List 以按索引获取,但担心转换为 list 会打乱我的元素并更改顺序
LinkedHashSet<String> personDetails = new LinkedHashSet<String>();
//persondetails => John, kennedy, Female
List<String> details = new ArrayList<>(personDetails);
String firstName = details.get(0);
String lastName = details.get(1);
String gender = details.get(2);
转换为列表使我的主要 objective 无法首先按插入顺序检索它们,因为列表不保留顺序。
你能给我建议一个替代方案还是我的错误吗?
首先,您无需将 LinkedHashSet 转换为 List 即可根据插入顺序检索它们。您可以使用迭代器遍历集合。
例如:
Iterator<String> iter = personDetails.iterator();
String firstName = null;
if (iter.hasNext())
firstName = iter.next();
String lastName = null;
if (iter.hasNext())
lastName = iter.next();
String gender = null;
if (iter.hasNext())
gender = iter.next();
其次,当您使用接受源 Collcetion
作为输入的构造函数创建 ArrayList
时,迭代 Collection
以便将元素添加到 ArrayList
。迭代顺序取决于 Collection
的迭代器的实现,而在 LinkedHashSet
的情况下,迭代顺序是插入的顺序。因此,您的 List
将保留插入顺序。
您可以在 Javadoc 中看到:
java.util.ArrayList.ArrayList(Collection c)
Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.
我有一个 linkedhashset,我需要从中获取与插入元素相同的元素。 要检索,我无法按准确的插入顺序获取元素。
将 linkedHashset 转换为 List 以按索引获取,但担心转换为 list 会打乱我的元素并更改顺序
LinkedHashSet<String> personDetails = new LinkedHashSet<String>();
//persondetails => John, kennedy, Female
List<String> details = new ArrayList<>(personDetails);
String firstName = details.get(0);
String lastName = details.get(1);
String gender = details.get(2);
转换为列表使我的主要 objective 无法首先按插入顺序检索它们,因为列表不保留顺序。
你能给我建议一个替代方案还是我的错误吗?
首先,您无需将 LinkedHashSet 转换为 List 即可根据插入顺序检索它们。您可以使用迭代器遍历集合。
例如:
Iterator<String> iter = personDetails.iterator();
String firstName = null;
if (iter.hasNext())
firstName = iter.next();
String lastName = null;
if (iter.hasNext())
lastName = iter.next();
String gender = null;
if (iter.hasNext())
gender = iter.next();
其次,当您使用接受源 Collcetion
作为输入的构造函数创建 ArrayList
时,迭代 Collection
以便将元素添加到 ArrayList
。迭代顺序取决于 Collection
的迭代器的实现,而在 LinkedHashSet
的情况下,迭代顺序是插入的顺序。因此,您的 List
将保留插入顺序。
您可以在 Javadoc 中看到:
java.util.ArrayList.ArrayList(Collection c)
Constructs a list containing the elements of the specified collection, in the order they are returned by the collection's iterator.