【问题标题】:java referencing objects in an arrayjava引用数组中的对象
【发布时间】:2011-06-05 07:07:10
【问题描述】:

是否有类似于indexof() 的函数可以在字符串数组(最好是未排序的)中搜索字符串并返回它的索引? (或者可能是纵坐标值?)

例如我正在尝试:

String[] colours= {"Red", "Orange", "Yellow"};

System.out.println("indexOf(Red) = " +
        colours.indexOf("Red"));

...但没有成功。

谢谢。

影音

p.s.这最终需要在二维数组中工作(以防万一)

【问题讨论】:

    标签: java c++ arrays algorithm indexing


    【解决方案1】:
    String[] colours= {"Red", "Orange", "Yellow", "Green", "Blue", "Violet", "Orange", "Blue"};
    
    Arrays.asList(colours).indexOf("Red"); // 0
    


    如果顺序无关紧要,那么

    Arrays.sort(colours);   
    Arrays.binarySearch(colours,"Red");//binary search takes sorted[natural order] array as input
    

    【讨论】:

    • 不起作用。 List.get() 将需要一个 int 参数并且不会搜索数组。
    • @Toa 啊.. indexOf 应该是
    • 没有二分搜索不起作用,Arrays.asList(colours).indexOf("Red");似乎
    • 它将排序数组作为输入我错过了这一点,所以第一个对你来说是完美的
    【解决方案2】:

    对于已排序的数组,您可以使用 Arrays.binarySearch:http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html

    对于未排序的数组Arrays.asList(array).indexOf("String") 可以。

    但是最后一种方法效率不高,因为列表将被顺序扫描。

    【讨论】:

    • 它会实例化一个ArrayList
    【解决方案3】:

    坦白说……

    int findString(String[] stringArray;String match) {
      for (i=0;i<stringArray.length;++i) {
        if (match.equals(stringArray[i]) return i;
      }
    }
    

    你会没事的。你本可以在比提出问题的时间更短的时间内写出来。

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多