Translating Java to X10

408 Views Asked by At

I'm translating a Java program into X10 and have run into a couple problems that I was wondering if anyone could help me translate.

Here's one Java segment that I'm trying to translate:

ArrayList<Posting>[] list = new ArrayList[this.V];
for (int k=0; k<this.V; ++k) {
    list[k] = new ArrayList<Posting>();
}

And here's what I've done in X10:

var list:ArrayList[Posting]=new ArrayList[Posting](this.V);
for (var k:int=0; k<this.V; ++k) {
    list(k)=new ArrayList[Posting]();
}

The line that's generating a mess of error statements is this:

list(k)=new ArrayList[Posting]();

Any suggestions and maybe an explanation on what I'm doing wrong?

2

There are 2 best solutions below

0
On

Here is code that should work for you:

val list = new Rail[ArrayList[Posting]](this.V);
for (k in 1..(this.V)) {
  list(k)=new ArrayList[Posting]();
}

And you can also do

val list = new Rail[ArrayList[Posting]](this.V, (Long)=>new ArrayList[Temp]());

i.e. use a single statement to create an initialized array.

0
On

Agreed with trutheality. You need to define list as something like Rail[ArrayList[Posting]] :

var list:Rail[ArrayList[Posting]]=new Rail[ArrayList[Posting]](this.V);

Also, as X10 supports type inference for immutable variables, it's often better to use val instead of var and omit the type declaration altogether:

val list = new Rail[ArrayList[Posting]](this.V);