Having interface
will allow you to change the implementation in future transparently (Without many changes on client side).
For example:
Map<String, Integer> map = new LinkedHashMap<String,Integer>();
Even though you change implementation to LinkedHashMap, client don't need to make any changes on their end.
If you use
HashMap<String, Integer> map = new HashMap<String,Integer>();
Client is tightly coupled with implementation. If you change implementation, then you need to change client also.
One draw back would be, If you would like to use any implementation specific methods, you need to cast to the corresponding type and use it.