gpt4 book ai didi

java - 在 Java 中查找字符索引的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 07:07:27 24 4
gpt4 key购买 nike

抱歉,这个标题可能看起来像是一个虚拟问题。我是 java 新手,假设我有一个像这样的 char 数组:

char[] hex = {
'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'
};

现在我想在该数组上找到一个项目的索引,例如'a',但经过一些研究,我意识到java的数组类没有indexOf方法。所以我做了以下事情:

int index = new String(hex).indexOf('a');

它工作正常,之后我尝试以下代码:

int index2 = Arrays.asList(hex).indexOf('a');

它不起作用,在我看到this之后问题我明白了原因。但现在我很好奇为什么在Java中查找索引需要花费太多精力并且为什么我们不能直接获取索引?为什么java的Array类没有indexOf方法?还是有其他简单的方法可以做到这一点而我错过了?

最佳答案

您有几个选择...

  • 您可以首先使用List,它提供 indexOf()方法。

  • 您可以保持数组排序并使用 Arrays.binarySearch() (尽管这可能有些过分)。

  • 您可以(相当容易)为此编写自己的函数:

    public static int indexOf(char[] array, char key) {
    for (int i = 0; i < array.length; i++)
    if (array[i] == key)
    return i;

    return -1;
    }
  • 您可以使用第三方库。例如, Guava 有 Chars.indexOf() 。 Apache 有 ArrayUtils.indexOf() (这显然可以更好地处理空输入)。

<小时/>

对于您的特定数组,由于它有一些很好的属性,您可以这样做:

public static int indexOf(char key) {
if ('0' <= key && key <= '8')
return key - '0';

if ('a' <= key && key <= 'f')
return key - 'a' + 10;

return -1;
}

关于java - 在 Java 中查找字符索引的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20913378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com