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
public MyDissimilarData( Type1 data1, Type2 data2 )
// etc . . .
// etc . . . .