应该是这样的吧
代码
class Test1{
public static void main(String[] args) {
int[] arr= {1,2,3,4,5,6,7};
int[] arr2= {1,2,3,4,5,6,7,8};
Object[] result1 = getNewArray(arr);
Object[] result2 = getNewArray(arr2);
System.out.println(Arrays.asList(result1).toString());
System.out.println(Arrays.asList(result2).toString());
}
static Object[] getNewArray(int[] arr) {
Arrays.sort(arr);
if (arr.length % 2 != 0)
arr[arr.length - 1] = 0;
return getResultArray(arr);
}
static Object[] getResultArray(int[] arr) {
Set<Integer> odd = new HashSet<>(), even = new HashSet<>();
for (int i = 0; i < arr.length; i++) {
if (arr[i]% 2!=0) {
odd.add(arr[i]);
}else {
even.add(arr[i]);
}
}
SortedSet<Integer> order = new TreeSet<Integer>(Collections.reverseOrder());
order.addAll(even);
Object[] oddArr=odd.toArray(),evenArr=order.toArray(),
result = Arrays.copyOf(evenArr, evenArr.length+oddArr.length);
for (int i = 0; i < oddArr.length; i++) {
result[evenArr.length+i]=oddArr[i];
}
return result;
}
}