[英]Sorting ArrayList of bytes array
我在 python 中有一些代碼,它執行以下操作:
for day in server_message.keys():
for epoch in server_message[day].keys():
assert sorted(server_message[day][epoch]) == server_message[day][epoch]
我需要在 Java 中編寫該代碼。 問題是 server_message 的結構是這樣的:
Map<Integer, Map<Integer, ArrayList<byte[]>>>
如何排序 ArrayList 的字節? Arrays.sort() 和 Collections.sort() 都不會返回新的排序數組,而是返回提供的數組上的工作。
Java 中有什么可以解決這個問題的,還是我需要為這種排序編寫自己的排序算法? 如何比較兩個字節數組?
Array.sort() 在后端使用快速算法,我很驚訝為什么 Array.sout() 不起作用,但您可以為此使用快速排序。
public class QuickSort {
public static void main(String[] args) {
int i;
int[] arr={90,23,101,45,65,23,67,89,34,23};
quickSort(arr, 0, 9);
System.out.println("\n The sorted array is: \n");
for(i=0;i<10;i++)
System.out.println(arr[i]);
}
public static int partition(int a[], int beg, int end)
{
int left, right, temp, loc, flag;
loc = left = beg;
right = end;
flag = 0;
while(flag != 1)
{
while((a[loc] <= a[right]) && (loc!=right))
right--;
if(loc==right)
flag =1;
elseif(a[loc]>a[right])
{
temp = a[loc];
a[loc] = a[right];
a[right] = temp;
loc = right;
}
if(flag!=1)
{
while((a[loc] >= a[left]) && (loc!=left))
left++;
if(loc==left)
flag =1;
elseif(a[loc] <a[left])
{
temp = a[loc];
a[loc] = a[left];
a[left] = temp;
loc = left;
}
}
}
returnloc;
}
static void quickSort(int a[], int beg, int end)
{
int loc;
if(beg<end)
{
loc = partition(a, beg, end);
quickSort(a, beg, loc-1);
quickSort(a, loc+1, end);
}
}
}
我認為您的問題是對字節數組( byte[]
)進行排序,而不是對字節的 arrays 列表( List<byte[]>
)進行排序,這沒有任何意義。 如果您想在不修改現有字節的情況下獲得一個排序的字節數組,您可以在之前克隆原始數組:
byte[] bytes = {0, 23, 127, -12 };
byte[] clone = bytes.clone();
Arrays.sort(clone);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.