Why can't you iterate over the array? It only has 10x10 fields anyway.
If you do it the other way around, you'd have to iterate over the list of boats, which would have to iterate over the fields they occupy, which just seems more, well, cumbersome.
Do you have to make a visual representation of the field? In that case I guess you could do the boat thing. In any other case, I guess it would be irrelevant to the code if the field you hit was a cruiser or an airship.
Beware that I'm only musing and am not a reliable reference.
If you do need to know which ship you're using, how about using a Map? In this case, I would create a Point -> Ship kind of map, aka, you input a point (for example, 4,6) and it either returns the reference to the ship that occupies that point, or a Null reference (as a stand-in for water). Then you can do fancy things like check if the ship is still alive after that shot, and removing that ship from the list of alive ships (which may be valuable if you want to check for a game-ended condition).
If you have any questions to my line of thinking, please ask. I'm not sure I know how I'd implement it in detail, but I'd love to work it out together with you. What are the methods you have to implement? What are their parameters, and their return values (and throws declarations, while we're at it).
If you want to, I can go online and we can have a chat on mumble. I love practical programming exercises like these.