Project Euler 4 - Largest palindrome product
We don't need a List


        List&lt;Integer&gt; palindromes = new ArrayList&lt;&gt;();



This could be just 

        int largest = -1;


As we just need to determine the largest one.  


        System.out.print(Collections.max(palindromes));



This just becomes 

        System.out.print(largest);


Work down, not up


        for (int i = 100; i &lt;= 999; i++) {
            for (int j = 100; j &lt;= 999; j++) {



This does more work than necessary.  Instead, consider 

        for (int i = 999; i &gt;= 100; i--) {
            for (int j = i; j &gt;= 100; j--) {


You want to find the maximum.  So start with the largest possible candidate and work your way down.  

Also, you don't have to check \$999\cdot 998\$ and \$998\cdot 999\$.  It's enough to test one.  So we can start j as i.  

There will be more that we can do later.  

Convert after calling isPalindrome


                if (isPalindrome(Integer.toString(i * j)))
                    palindromes.add(i * j);



Consider 

                int product = i * j;
                if (product &lt;= largest) {
                    break;
                }

                if (isPalindrome(product)) {
                    largest = product;
                }


If product is smaller than the largest palindrome found so far, we don't need to check these values anymore.  Also, we only update largest if product is larger.  So we don't need to do the Collections.max after.  

We don't repeatedly calculate the same product (compiler probably fixes that for you anyway, but I find this easier to follow).  

You said 


  I have to obviously convert int to String to check is given number is palindrome.


But it is not obvious to me that we have to convert to a String to check if it is a palindrome.  That's a conceptually simple way, but we could do it more efficiently with math.  And this way, we can drop in a math-based replacement without altering this method.  

And to fix the mismatched parameters without using a replacement, we could just write 

    private static boolean isPalindrome(int candidate) {
        return isPalindrome(Integer.toString(candidate));
    }


And as I said, we can replace that method with a more efficient one without changing the caller.