Java的:创建一个字母字符指数数组(Java: Create an array with lett

2019-09-18 04:59发布

是否有可能在Java创建由字母字符(“a”到“Z”)索引,而不是整数的数组?

与这种阵列的“a”,我想用这种方式来useit,例如

print (a['a']);

Answer 1:

使用Map来代替。

Map<Character, Object> myMap = new HashMap<Character, Object>();
myMap.put('a', something);

print(myMap.get('a'));

在另一方面,正如其他人已经建议,你可以用一个char作为指数(但你会离开所有数组元素0...'a'-1空):

String[] a = new String['z' + 1];
a['a'] = "Hello World";
System.out.println(a['a']);


Answer 2:

是否有可能在Java创建由字母字符(“a”到“Z”)索引,而不是整数的数组?

当然,这是可能的。
你可以做到这一点无论是这样的:

char theChar = 'x';  
print (a[theChar - 'a']);   

或者假设只处理ASCII字符串只是声明尺寸256指数直接使用你的性格数组的数组。

char[] a = new char[256];   
char theChar = 'x';  
print (a[theChar]);    

现在你不在乎它是否是大写/小写或什么的。
其实,如果你有兴趣专门为使用ASCII字符串 Map可以矫枉过正相比,一个简单的数组。 数组不会浪费这么大的空间,也许一个Map (一个非常有效的结构)是太多这样一个简单的任务。



Answer 3:

你可以创建26个元素始终的。减去数组'a'从你字符的索引:

int[] array = new int[26];
array['a'-'a']=0;
array['b'-'a']=1;
\\ etc...


Answer 4:

怎么样简单的东西也是这样吗?

public static int getLetterValue(char letter) {
    return (int) Character.toUpperCase(letter) - 64;
}

并使用它像这样:

System.out.println(a[getLetterValue('a'));

因为它站在此刻这将失败相当困难。 你需要检查它的范围之内等。

另外,您可以实现Java List接口并覆盖不用彷徨和。新增方法,使他们可以使用字符。 但是,这使我想到我的下一个点。

这是更好地使用更好的处理异常的数据结构,而且是专为这一类的用例。 一个地图是一个更好的选择。



Answer 5:

是的,没有。 是的,因为你可以做到这一点,它会编译。 试试下面的代码:

class foo {
    public static void main(String[] args) throws Exception {
        int a[] = new int[100];
        a['a'] = '1';
        System.out.printf("%d\n", a['a']);
    }
}

没有,因为字符将被隐式转换为整数,这听起来并不像你在找什么。



Answer 6:

您正在查找的数据结构被称为Map在Java中的土地。

此数据结构由各种名称,诸如在PHP关联数组已知的; 字典在C#,Python的; 散列红宝石等,这导致了这样的困惑。



Answer 7:

你可以做这样的事情: - 用于如:

char[] a = new char[]{'s','t'};
int[] result = new int[256];
result[a[0]]= 100;
System.out.println(result['s']);//will print 100


Answer 8:

不,你不能这样做。 在这种情况你应该使用Map来代替。



Answer 9:

我觉得这是一个重复的问题! 见灿的Java使用字符串作为数组的索引键? (例如:阵列[ “A”] = 1;) 。

您应该使用地图映射信的价值和调用get来获取值。



文章来源: Java: Create an array with letter characters as index