There are sparse entries in la4j, like CRSMatrix and CCSMatrix. So, it is not necessary to iterate through the all elements of these matrices while multiplying (for example). So, it would be great to develop proof-of-concept that will allow to hide details from developes and using the same API provide a more efficient way to perform basic operations.
In terms of matrix multiplying, it should be:
Matrix a = new CRSMatrix(...);
Matrix b = new Basic2DMatrix(...);
Matrix c = a.multiply(b);
Just an Idea: Probably, it would be the good idea to incapsulate all operations in special objects, which know the internal structure (or some other details) and generate such objects in matrices methods like multiply from two matrix operands.
I'm open for descussion.