字符串数组中的 indexOf

Posted

技术标签:

【中文标题】字符串数组中的 indexOf【英文标题】:indexOf in a string array 【发布时间】: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... Where is Java's Array 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 点后的"

【讨论】:

以上是关于字符串数组中的 indexOf的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript——数组的indexOf()方法在IE8中的兼容性问题

c语言indexof的问题,请指教!

Js基础-indexOf()方法的使用

使用 push() 方法和 indexOf() 方法从 AngularJS1 中的数组中删除/检查重复的日期

javascript indexOf() - 字符串和数组方法

js数组去重常见的七种方法