private String join(Collection<String> c, String str) {
		if (null == c || c.isEmpty()) {
			return "";
		}
		
		List<String> strs = new ArrayList<String>(c);
		Collections.sort(strs, new Comparator<String>() {
			@Override
			public int compare(String o1, String o2) {
				return o1.length() > o2.length() ? -1 :
					   o1.length() == o2.length() ? 0 : 1;
			}
		});
		
		StringBuilder sb = new StringBuilder();
		for (String s : strs) {
			sb.append(s).append(str);
		}
		sb.setLength(sb.length() - str.length());
		return sb.toString();
	}