最近我在面試中遇到了一個問題,我無法爲這個問題製作邏輯。我有一個像Java中的鋸齒陣列排序
[ 1,'a',45,'h',56,'d',2,'t',6,'p' ]
。如何排序這個數組?輸出應該以這種方式..
intArray = [1,2,6,45,56]
charArray= ['a','d','h','p','t']
如果有人知道它的邏輯請評論。這將是一個很大的幫助。
謝謝!
最近我在面試中遇到了一個問題,我無法爲這個問題製作邏輯。我有一個像Java中的鋸齒陣列排序
[ 1,'a',45,'h',56,'d',2,'t',6,'p' ]
。如何排序這個數組?輸出應該以這種方式..
intArray = [1,2,6,45,56]
charArray= ['a','d','h','p','t']
如果有人知道它的邏輯請評論。這將是一個很大的幫助。
謝謝!
一種方式將是單獨的整數和然後排序 -
Object[] objects = new Object[]{ 1,'a',45,'h',56,'d',2,'t',6,'p' };
List integers = new ArrayList<Integer>();
List characters = new ArrayList<Character>();
// Check and store integers and characters
// Doesn't validate and assumes you either have integers or characters
for(Object o : objects){
if(o instanceof Integer){
integers.add(o);
} else {
characters.add(o);
}
}
//Sort them separately
Collections.sort(integers);
Collections.sort(characters);
System.out.println(integers);
System.out.println(characters);
下面的代碼產生所期望的結果:
import static java.util.stream.Collectors.*;
final Map<Class<?>, Set<Object>> result = Stream.of(array) //
.collect(//
groupingBy(x -> x.getClass(), //
mapping(x -> x, toCollection(TreeSet::new))));
,以查看結果:
System.out.println(Arrays.toString(result.get(Integer.class).toArray()));
System.out.println(Arrays.toString(result.get(Character.class).toArray()));
下面是它的實施。我使用了兩個for循環,以便我們可以輕鬆找出兩個新的子數組的長度,而不是用基數組的長度初始化它。 我試過不使用除Arrays.sort()之外的任何內置方法。您也可以編寫自己的代碼來排序這兩個子數組。
public static void main(String[] args) {
Object[] array = { 1, 'a', 2, 'f', 5, 'b', 3 };
int intLoc = 0;
int charLoc = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] instanceof Integer) {
intLoc++;
} else {
charLoc++;
}
}
int intArray[] = new int[intLoc];
char charArray[] = new char[charLoc];
for (int i = 0; i < array.length; i++) {
if (array[i] instanceof Integer) {
--intLoc;
intArray[intLoc] = (int) array[i];
} else {
--charLoc;
charArray[charLoc] = (char) array[i];
}
}
Arrays.sort(intArray);
Arrays.sort(charArray);
System.out.println(Arrays.toString(intArray));
System.out.println(Arrays.toString(charArray));
}
它是'Array'還是'ArrayList'? – Satya
原始數組如何存儲在數組中? –
@Satya,NamanGala,這很重要嗎?這是一個關於排序異構元素的問題。我認爲底層數據結構的細節並不重要。在所有采訪中,我已經完成了僞代碼。 – aioobe