0

我想通过仅使用包含的文本来获取数组列表的特定索引。说假设,

我有数组列表

Test = {"LabTechnician","SeniorLabTechnician_4","Pathologist","SeniorLabTechnician_6"}

如果想要两者的索引号SeniorLabTechnician,我必须在indexOfandlastindexOf方法中使用确切的字符串。喜欢Test.indexOf("SeniorLabTechnician_4")Test.lastindexOf("SeniorLabTechnician_6")

这会给我确切的答案。但不是那样,而是只使用前缀说像高级或类似的东西,我想要之前完全相同的答案。

喜欢 Test.indexOf("Senior")Test.lastindexOf("Senior")...

请建议

4

3 回答 3

2

循环列表并将元素与 进行比较contains

int indexOfContains(List<String> lst, String what) {
  for(int i=0;i<lst.size();i++){
    //this will make the check case insensitive, see JAVY's comment below:
    //if(lst[i].toLowerCase().contains(what.toLowerCase())) {
    if(lst[i].contains(what)){
      return i;
    }
  }
  return -1;  
}

如果你想要类似的东西,lastIndexOf那么只需颠倒列表的迭代顺序。

于 2016-02-22T12:34:31.867 回答
0

据我了解,您想修改 ArrayList 的 indexOf 和 lastIndexOf 方法的默认行为。

  1. 我的解决方案是创建一个新类 CustomArrayList 扩展 ArrayList。
  2. 覆盖 indexOf 方法
  3. 覆盖 lastIndexOf 方法

    public class CustomArrayList extends ArrayList {
    
      public int indexOf(Object o) {
        if (o == null) {
            for (int i = 0; i < size(); i++)
                if (get(i) == null)
                    return i;
        } else {
            for (int i = 0; i < size(); i++)
                if(o instanceof String) {
                    if(get(i).toString().startsWith(o.toString())) {
                        return i;
                    }
                } else {
                    if (o.equals(get(i)))
                        return i;
                }
        }
        return -1;
    }
    
    public static void main(String[] args) {
        List list = new CustomArrayList();
        list.add("LabTechnician");
        list.add("SeniorLabTechnician_4");
        list.add("Pathologist");
        list.add("SeniorLabTechnician_6");
        System.out.println(list.indexOf("Senior"));
    }
    

    }

我为你留下了 lastindexof 方法的覆盖。

于 2016-02-22T13:14:24.417 回答
-1
private int getsearchPos(String searchvalue) {
  for(String hj : Test)
     {
         if(hj.toLowerCase().startsWith(searchvalue.toLowerCase()))
                      return Test.indexOf(hj);
     }
    return -1;
}

这应该会有所帮助。

于 2016-02-22T12:30:19.783 回答