当前位置: 首页 > 面试题库 >

如何在java.util.Set中获取项目的索引

督建柏
2023-03-14
问题内容

我知道Set和List之间的区别(允许唯一与重复,而不是有序/有序等)。我正在寻找的是一个使元素保持有序的集合(这很容易),但是我还需要能够恢复插入元素的索引。因此,如果我插入四个元素,那么我希望能够知道其中一个元素的插入顺序。

MySet<String> set = MySet<String>();
set.add("one");
set.add("two");
set.add("three");
set.add("four");

int index = set.getIndex("two");

因此,在任何给定时刻,我都可以检查是否已添加字符串,并获取该字符串在集合中的索引。是否有这样的事情,或者我需要自己实施?


问题答案:

类中的一个小型静态自定义方法Util会有所帮助:

 public static int getIndex(Set<? extends Object> set, Object value) {
   int result = 0;
   for (Object entry:set) {
     if (entry.equals(value)) return result;
     result++;
   }
   return -1;
 }

如果你需要/想一个类,它 是一个 Set,并提供getIndex()方法,我强烈建议实施新的Set和使用Decorator模式:

 public class IndexAwareSet<T> implements Set {
   private Set<T> set;
   public IndexAwareSet(Set<T> set) {
     this.set = set;
   }

   // ... implement all methods from Set and delegate to the internal Set

   public int getIndex(T entry) {
     int result = 0;
     for (T entry:set) {
       if (entry.equals(value)) return result;
       result++;
     }
     return -1;
   }
 }


 类似资料:
  • 公共类DbHelper扩展了SQLiteOpenHelper{ }

  • 问题内容: 如何获得当前Eclipse项目的名称?我在GMF视图中,使用弹出菜单ist的某些子菜单时需要项目名称。 问题答案: 这GMF类有一个直截了当的回答,如果你有机会到ResourcesPlugin名称: 通用答案(来自可能过时的代码)可能类似于(如果您打开了编辑器): 如果没有打开编辑器:

  • 在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接 我想获取位置,将开关盒设置为每个卡视图的意向活动 当我点击card view I时,他会打开另一个页面,当你点击card view 2时,他会打开另一个页面。 看看我的密码 在recyclerView中获取已点击项目的位置,我在recyclerView中创建cardview和链接 我想获取位

  • 问题内容: 我在python中有一个元组(“ A”,“ B”,“ C”,“ D”,“ E”),如何获取特定索引号下的哪个项目? 示例:假设给定0,它将返回A。给定2,将返回C。给定4,它将返回E。 问题答案: 您显示的不是,而是一个(圆括号而不是方括号显示)。但是,无论是索引列表 还是 元组(在索引中获取一项),无论哪种情况,都需要将索引附加在方括号中。 所以: 打印,等等。 元组(不同于列表)是

  • 问题内容: 在下面的示例中,我创建了一个包含3个项目的VARRAY。 我想要以下输出: 请注意,该预定义为。 问题答案: