[quote]But aren’t three dimensional Arrays too space-consuming?
[/quote]
Even when using raw arrays, i would advise you to use the ‘flyweight pattern’, here a good link: http://gameprogrammingpatterns.com/flyweight.html
And here the overview of chapters on that site: http://gameprogrammingpatterns.com/contents.html (one of the BEST sites you’ll ever know :P)
So basically, objects share as much data as possible, creating much less data to initialize, handle etc, your array objects will be smaller.You could share: Enum’s/Texture objects(allthough dont save that in the blocks! :x),/ Texture coordinates, you get the idea.
And when you want to use blocks, you don’t event need block coordinates, since you can ‘compute them at runtime’. When you use a three.dimensional array, you haveyour coordinates
Here another site that explains it nicely: https://sites.google.com/site/letsmakeavoxelengine/
[quote]…but the map in it is rather small, less than the half of it is storing information of the Environment.
[/quote]
That’s exactly what i meant, that’s the bad thing with voxels/blocks. You have a big amount of data (Air blocks and the like), that are not seen or used, you mostly just ignore them. Then you need to do some tricks, Rendering and update whise to keep the performance well.
But in this case it is not a problem, but your maps a likely to get a lot bigger than this :), so it depends.(Also the way you want to design the levels…)
If you use blocks: You can easily create an editor, or do it per text (or whatever really). Your collision detection won’t be too hard, but maybe just a bit time consuming. With collision, you will need, off course, to just get blocks around the player to calculate collision to make it ‘efficient’. But then again you need to define which sides of the blocks are going to be renderer, to not just give your CPU cycles away, and then maybe think about using Display List’s/VBO for rendering.(You use OpenGL right ? :P)
If you use other meshes(from rectangular boxes to more complex ones): You can still easily create an editor, even make it fixed along a grid, but you’ll have much less objects to worry about. Let’s say you Model one box for the parts of the floor, one for the log, one for everything, you can test collision on every objects and it still won’t matter (In this little example). But then you need to eventually do near and precise collision detection, or even still by ‘regions’. You won’t have to bother so much about which faces not to draw, since there (probably) arent so many. BUT, i guess, texturing the levels will be harder depending on how you do things, since you have to uv-map the meshes by hand or program.
I could go on and on, but i think you’ve got it after the second paragraph 
Do you use LWJGL/OpenGL and to plan to make this ‘by hands’?