There are many ways to do this. Here is one way with minimal change to your current code, and minimal performance impact:
boolean first = true;
for (Map.Entry<String, String> entry : words.entrySet()) {
System.out.printf("%s%s <=> %s", first ? "" : ", ",
entry.getKey(), entry.getValue());
first = false;
}
The trick is to realize that the separator goes between elements of the sequence rather than after them.
(There are some tweaks that would make the above marginally faster, but since it is writing to standard output, it is reasonable to assume that most of the cost of this code will be on the output side.)
@YCF_L's solution is neater if you are familiar with streams, but it has the downside that it will construct a string representing the entire map. If the map is extremely large, that would be undesirable.