在JavaScript中,我可以编写如下代码:
var a = new Array();
a[2] = 'a';
a[20] = 'b';
这对Java不起作用,重点是我不想具体确定它的长度。
在编写java时我怎么能保持这种快乐的风格?
答案 0 :(得分:1)
如果您不想要特定长度,可以像这样使用List:
List<Character> list = new ArrayList<>();
list.add('a');
list.add('b');
答案 1 :(得分:1)
你做不到。 Java是Javascript,因为火腿是仓鼠。没有理由相信它们具有相同的语法。
如果您想要稀疏数组,请使用Map
:
final Map<Integer, Character> a = new LinkedHashMap<>();
a.put(2, 'a');
a.put(20, 'b');
答案 2 :(得分:0)
Java
和JavaScript
是两种不同的语言。你不能在两个方面做同样的事情
在Java
中你可以写
char[] arr=new char[2];
arr[0]='a';
arr[1]='b';
如果您不想具体说明长度,可以在List
Java
List<Character> list=new ArrayList<>();
list.add('a');
list.add('b');
答案 3 :(得分:0)
如果你想要一个字符数组,你可以这样做:
char[] array = new char[30];
array[2] = 'a';
array[20] = 'b';
答案 4 :(得分:0)
这取决于,如果您要使用固定大小的数组,您可以使用:
char myarray[]=new char[50];
myarray[2]='a';
myarray[20]='b';
如果要动态更改数组的大小,可以使用类似ArrayList的集合(查看文档)并在所需位置插入字符
答案 5 :(得分:0)
正如其他人已经指出的那样:Java和JavaScript是两回事。对于可变大小的容器,有Java collections framework。
但是要选择哪个?这取决于你需要什么。从你的问题我可以想象两个案例:
基本上是一个类似数组的列表。在Java中,除了其他列表实现之外,ArrayList
使用如下:
List<Character> myList = new ArrayList<Character>();
// insert element at the end of the list
myList.add('a');
// insert element at specific position in list
myList.add(1, 'b');
// this will fail, because there's no element at position 2!!!
myList.add(3, 'c')
在java中有很多地图实现,我建议使用HashMap
,如下所示:
Map<Integer,Character> myMap = new HashMap<Integer,Character>();
// insert mappings int -> char
myMap.put(0, 'a');
myMap.put(1, 'b');
myMap.put(20, 'c');
每个容器都有不同的用途。我建议阅读Java collections tutorial以便能够选择最合适的一个。还要看看tucuxi的答案,因为他提出了一个模拟所需行为的解决方案,但考虑到(正如他自己所说)这不是java的做事方式!
答案 6 :(得分:0)
你总是可以自己写。你不会得到语法,但大部分的味道仍然存在。
请注意,效率方面,这是一个糟糕的想法。您可以通过学习&#34; Java方式&#34;来编写更多更好的代码。做事。所有语言都是如此:针对语言的编程肯定会让你感到痛苦。
但这是代码:
class MyArray<T> extends ArrayList<T> {
public MyArray<T>() { super(); }
public void add(int i, T value) {
if (size() < i) {
ensureCapacity(i+1); // grow at most once instead of multiple times
while (size() < i)) {
add(null); // extend with a null object
}
add(value);
} else {
add(i, value);
}
}
}
现在,您可以将花园种类ArrayList
与MyArray
的实例进行比较:
ArrayList<Character> a = new ArrayList<>();
MyArray<Character> b = new MyArray<>()
a.add(10, 'X'); // IndexOutOfBoundsException, size is 0
b.add(10, 'X'); // no exception - you get [10 x null, 'X']
b.get(10); // returns 'X'
请记住,JavaScript数组可以被任意对象索引,而不仅仅是整数 - 但是如果可能的话,JavaScript VM会尝试使用数字索引的数组。对于任意索引,您需要使用Java HashMap
:
class MyArray2<T> extends HashMap<Object, T> {
public MyArray2<T>() { super(); }
public void add(Object o, T value) { set(o, value); }
}
然后您将使用as:
MyArray2<Character> c = new MyArray2<>()
c.add("anything", '?');
c.get("anything"); // returns '?'
答案 7 :(得分:-1)
char arr[]=new char[30]; //declares an array which can hold 30 characters
arr[2]='a';
arr[20]='b';
但是如果你不想指定长度,那么arraylist会帮助你完成你的任务,因为数组的大小总是在Java中固定