I get the impression that you're using parallel arrays to store data rather than creating a class to organize the data in an OOP way. Parallel arrays are to be avoided whenever possible in favor of a more OOP approach.
Your 2D array of dissimilar types could be modified to be an array (or ArrayList) of a single type with the single type containing the dissimilar types as fields:
public class MyDissimilarData
{
// instance variables
Type1 data1;
Type2 data2;
// constructor
public MyDissimilarData( Type1 data1, Type2 data2 )
{
// etc . . .
}
// etc . . . .
}