I very rarely use arrays in Java and the same would apply to C#. They're object oriented languages and you generally get much better flexibillity in the long run if you use classes and objects instead of primitive constructs such as arrays.
You're example looks like a kind of cross reference or lookup known as an associative array. Which way round you put the elements really depends on how you're going to be using it. It's a design decision specific to the problem. You need to ask yourself what will you be starting with and what do you want to end up with?
It looks like you want to retrieve different types depending on what you're looking up? Month is a String, year is an Integer etc. This makes an array or HashMap a bad choice because the calling code will need to second guess the type of data it is retrieving. A better design would be to wrap this data in an object which would be type safe. That's kind of the whole point of using Java and C#.
In this case using an object would give you the flexibillity to check that the month is actually a real value. You could for instance create an enum that contains the months and return an instance of this in the getMonth method.
Also, I haven't got enough rep points to leave a comment but I wanted to reply to Dave F's answer. Hashtable is a legacy class from Java's early days and so should be avoided. HashMap is the recommended replacement, both implement the Map interface.
In Java's early days the collection classes were synchronised to make them threadsafe (Vector, Hashtable etc). This made these essential classes unecessarily slow and hampered performance. If you need a synchrnised map these days there is a wrapper to HashMap.
Map m = Collections.synchronizedMap(new HashMap(...));
In other words there is no reason to use Hashtable anymore unless you happen to be working with legacy code.