Java 将从HashSet中删除的元素分配给变量

Java 将从HashSet中删除的元素分配给变量,java,eclipse,hashset,Java,Eclipse,Hashset,我想删除HashSet的第一个元素,并将这个删除的元素分配给另一个变量。因为它的remove函数返回布尔值,所以我不能这样做。如何获取其删除的值?谢谢 我的代码是 HashSet<Node> List = new HashSet<Node>(); expandList.add(s); while(expandList.size() > 0) { Node toAssigned = List.remove(s); // other w

我想删除HashSet的第一个元素,并将这个删除的元素分配给另一个变量。因为它的remove函数返回布尔值,所以我不能这样做。如何获取其删除的值?谢谢 我的代码是

  HashSet<Node> List = new HashSet<Node>();
  expandList.add(s);
  while(expandList.size() > 0)
   {
     Node toAssigned = List.remove(s);
   // other works related with toAssigned are here

   }
在下列情况下:

您可以通过添加所需的getIndex方法来扩展LinkedHash

只需使用迭代器和计数器遍历集合,检查对象是否相等。如果找到,请返回计数器

或者,您也可以尝试:

创建集合后,只需将其转换为列表并从列表中按索引获取:

Set<String> stringsSet = new HashSet<>();
stringsSet.add("string1");
stringsSet.add("string2");

List<String> stringsList = new ArrayList<>(stringsSet);
stringsList.get(0); // "string1";
stringsList.get(1); // "string2";

HashSet中没有第一个元素的概念,因为序列顺序未指定。也许,队列数据结构更适合您的需要

如果需要从集合中删除某个元素而不关心要删除的元素,可以使用以下方法:

set.iterator().next()

但这不影响表演吗?这段代码是BFS算法的一部分,用于8个益智游戏。因为我的顾问说arrayList太慢,所以我不得不使用HashSet@mahdad@user3864949:HashSet确保没有重复项,提供O1 contains方法,但不保留顺序。ArrayList不确保没有重复项,contains处于启用状态,但您可以控制条目的顺序。@user3864949我相信使用哈希集比使用数组列表有更好的性能。但是你需要为你的问题这样做