public static <S,T extends Comparable<S>> int compareTo(T[] lhs, T[] rhs) {
		if(lhs.length != rhs.length) {
			return lhs.length - rhs.length;
		} else {
			for(int i=0;i!=lhs.length;++i) {
				int r = lhs[i].compareTo((S) rhs[i]);
				if(r != 0) {
					return r;
				}
			}
			return 0;
		}
	}
public static <S,T extends Comparable<S>> int compareTo(T[] lhs, T[] rhs) {
		if(lhs.length != rhs.length) {
			return lhs.length - rhs.length;
		} else {
			for(int i=0;i!=lhs.length;++i) {
				int r = lhs[i].compareTo((S) rhs[i]);
				if(r != 0) {
					return r;
				}
			}
			return 0;
		}
	}
public static < S , T extends Comparable < S > > int compareTo ( T [ ] lhs , T [ ] rhs ) { if ( lhs . length != rhs . length ) { return lhs . length - rhs . length ; } else { for ( int i = 0 ; i != lhs . length ; ++ i ) { int r = lhs [ i ] . compareTo ( ( S ) rhs [ i ] ) ; if ( r != 0 ) { return r ; } } return 0 ; } }
A default operator for comparing arrays

@param lhs
@param rhs
@return
A default operator for comparing arrays