"Does an array contain the same elements as another array?"
if (list1[i] == list2[0]) {
            for (int j = 1; j &lt; list2.length; j++) {
                if (list1[i + j] == list2[j]) {



We can drop this from three lines to one.  

        for (int j = 0; j &lt; list2.length &amp;&amp; list1[i + j] == list2[j]; j++) {


A side benefit is that this handles the case where list2 is empty (zero length).  The original code would crash in that case.  

At the expense of an extra comparison (which could be compiled out), we get rid of two levels of indent and 


                } else {
                    break;



Because this will leave the loop automatically.  It won't be necessary to break out manually.  

It might be better to replace 


        if (list1[i] == list2[0]) {
            for (int j = 1; j &lt; list2.length; j++) {
                if (list1[i + j] == list2[j]) {
                    if (j == (list2.length - 1)) {
                        return true;
                    }
                } else {
                    break;
                }
            }
        }



with 

        int j = 0;
        while (j &lt; list2.length &amp;&amp; list1[i + j] == list2[j]) {
            j++;
        }

        if (j == list2.length) {
            return true;
        }


Moving the scope of j outside the inner loop allows us to move the test out of the loop as well.  So rather than testing on every iteration, we can test just once.  

Alternately 

        for (int j = 0; list1[i + j] == list2[j]; j++) {
            if (j + 1 &gt;= list2.length) {
                return true;
            }
        }


Does the same thing as the original code.  It may not be obvious, but this does the same thing with fewer comparisons.  

But we're back to throwing an exception if list2 is zero length.  This does exactly the same thing as the original code with fewer comparisons and less code.