Im using Java 8 and apache httpclient 4.5.13
HashMap<String, String> customParams = new HashMap<>();
customParams.put("param1", "ABC");
customParams.put("param2", "123");
URIBuilder uriBuilder = new URIBuilder(baseURL);
for (String paramKey : customParams.keySet()) {
    uriBuilder.addParameter(paramKey, customParams.get(paramKey));
}
System.out.println(uriBuilder.build().toASCIIString()); // ENCODED URL
System.out.println(uriBuilder.build().toString); // NORMAL URL
Full example with DTO
public class HttpResponseDTO {
    private Integer statusCode;
    private String body;
    private String errorMessage;
    
    public Integer getStatusCode() {
        return statusCode;
    }
    public void setStatusCode(Integer statusCode) {
        this.statusCode = statusCode;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }
    public String getErrorMessage() {
        return errorMessage;
    }
    public void setErrorMessage(String errorMessage) {
        this.errorMessage = errorMessage;
    }
}
    /**
     * 
     * @param destinationURL
     * @param params
     * @param headers
     * @return HttpResponseDTO
     */
    public static HttpResponseDTO get(String baseURL, Boolean encodeURL, HashMap<String, String> params, HashMap<String, String> headers) {
        final HttpResponseDTO httpResponseDTO = new HttpResponseDTO();      
        // ADD PARAMS IF
        if (params != null && Boolean.FALSE.equals(params.isEmpty())) {
            URIBuilder uriBuilder;
            try {
                uriBuilder = new URIBuilder(baseURL);
                for (String paramKey : params.keySet()) {
                    uriBuilder.addParameter(paramKey, params.get(paramKey));
                }
                // CODIFICAR URL ?
                if (Boolean.TRUE.equals(encodeURL)) {
                    baseURL = uriBuilder.build().toASCIIString();
                } else {
                    baseURL = uriBuilder.build().toString();
                }
            } catch (URISyntaxException e) {
                httpResponseDTO.setStatusCode(500);
                httpResponseDTO.setErrorMessage("ERROR AL CODIFICAR URL: " + e.getMessage());
                return httpResponseDTO;
            }
        }
        // HACER PETICION HTTP
        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {            
            final HttpGet get = new HttpGet(baseURL);   
            // ADD HEADERS
            if (headers != null && Boolean.FALSE.equals(headers.isEmpty())) {           
                for (String headerKey : headers.keySet()) {
                    get.setHeader(headerKey, headers.get(headerKey));
                }           
            }
            try (CloseableHttpResponse response = httpClient.execute(get);) {
                HttpEntity httpEntity = response.getEntity();
                if (httpEntity != null) {
                    httpResponseDTO.setBody(EntityUtils.toString(httpEntity));
                    httpResponseDTO.setStatusCode(response.getStatusLine().getStatusCode());
                }
            } catch(Exception e) {
                httpResponseDTO.setStatusCode(500);
                httpResponseDTO.setErrorMessage(e.getMessage());
                return httpResponseDTO;
            }
        } catch(Exception e) {
            httpResponseDTO.setStatusCode(500);
            httpResponseDTO.setErrorMessage(e.getMessage());
            return httpResponseDTO;
        }
        return httpResponseDTO;
    }