【问题标题】:indexOf in a string array字符串数组中的 indexOf
【发布时间】:2011-09-09 02:57:27
【问题描述】:

有没有像你在字符串中那样获取 indexOf 的方法。

output.add("1 2 3 4 5 6 7 8 9 10);  
String bigger[] = output.get(i).split(" ");
int biggerWher = bigger.indexOf("10");

我写了这段代码,但它返回一个错误并且没有编译!有什么建议吗?

【问题讨论】:

标签: java arrays string indexof


【解决方案1】:

使用这个...

output.add("1 2 3 4 5 6 7 8 9 10");  
String bigger[] = output.get(i).split(" ");
int biggerWher = Arrays.asList(bigger).indexOf("3");

【讨论】:

  • 使用 asList 的附带效果是什么?是否在内存中复制原始数组?
  • @Richard:它将创建一个新的 ArrayList 对象并从 String 数组转换,我猜内存量是以前的 3-5 倍。 public static List asList(T...array) { return new ArrayList(array); }
【解决方案2】:

当数组是对象数组时,则:

Object[] array = ..
Arrays.asList(array).indexOf(someObj);

另一种选择是org.apache.commons.lang.ArrayUtils.indexOf(...),它还具有基本类型数组的重载,以及采用起始偏移量的 3 参数版本。 (Apache 版本应该更高效,因为它们不需要创建临时的 List 实例。)

【讨论】:

  • 为什么我总是忘记大多数收集方法也适用于数组使用asList.... +1
  • 使用 asList 的附带效果是什么?是否在内存中复制原始数组?
  • @Richard - 没有复制。 “asList”列表是原始数组的包装器。阅读 javadocs!
【解决方案3】:

数组没有indexOf() 方法;但是,java.util.List 可以。所以你可以将你的数组包装在一个列表中并使用List 方法(add() 等除外):

output.add("1 2 3 4 5 6 7 8 9 10");  
String bigger[] = output.get(i).split(" ");
int biggerWhere = Arrays.asList(bigger).indexOf("10");

【讨论】:

    【解决方案4】:

    您可以使用java.util.Arrays.binarySearch(array, item); 这会给你一个项目的索引,如果有的话......

    但请注意,在搜索之前需要对数组进行排序。

    问候

    【讨论】:

      【解决方案5】:

      Java 数组中没有直接的 indexOf 方法。

      【讨论】:

        【解决方案6】:
        output.add("1 2 3 4 5 6 7 8 9 10");
        

        你错过了 10 点后的"

        【讨论】:

          猜你喜欢
          • 2011-04-09
          • 1970-01-01
          • 2021-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-06
          • 1970-01-01
          • 2016-06-17
          相关资源
          最近更新 更多