You definitely want to go down the Array route for performance reasons.

If working on a square grid it's simple to find the adjacent neighbours. You grab the Index of your starting tile either through a "Mouse Pick" action, followed by "Array Index Of" OR better yet, an algorithm to determine the selected tile based on the position of your mouse. Because your tiles are uniform in size and position, you can round your X,Y,Z Positions to the nearest tile. So for example, my tiles are 5x5, I mouse pick at position X=11,Z=8 From this I can "round to nearest" in increments of 5. Giving us the tile 2 across (10) and 2 down (10)

A1(0),A2(1),A3(2)

B1(3),B2(4),B3(5)

C1(6),C2(7),C3(

So, we've pick B2 as our starting position. This is the 5th entry in our Array (It's Index is 4 - Arrays start at 0) to get the left or right tiles, we can add or subtract 1 from that index. To get the top and bottom neighbours, we'd add or subtract the row Size (3) from the starting index.

Now, a Hexagonal grid works slightly different because there's an offset on the rows. You'll need to work out if you're on an odd numbered row or an even one. How to go about this eludes me at the moment, but once you've worked out which row you're on, you can adjust which Index values are neighbours by adding or subtracting an additional 1.

Sorry I can't give you more details, but I hope this sets you on the right track, or someone more familiar with Hexagonal grids can help with figuring out the algoritm to determine which row you're on.