2017-02-22 69 views
-1

可以說我有3個不同的陣列;根據它們的值加入陣列

int[] arr1= new int[2] {7,9}; 

int[] arr2= new int[2] {1,5}; 

int[] arr3= new int[2] {5,7}; 

所以在我的情況下是同樣的事情,他們的訂單將永遠隨機因此我只是不能像做「ARR2 + ARR3 + ARR1」。我需要檢查第二個值並在其他第一個值中找到它。

int[] arr1= new int[2] {5,7}; 

int[] arr2= new int[2] {1,5}; 

int[] arr3= new int[2] {7,9}; 

我怎樣才能合併他們的方式,我將產生數組;

{1,5,5,7,7,9}

而用於下一步驟i需要檢查以下條件

int[] arr1= new int[2] {5,9}; 

int[] arr2= new int[2] {1,5}; 

int[] arr3= new int[2] {7,9}; 

由於這不會創建要得到的數組,我需要拋出警告。我將爲我的項目使用c#,但您可以用C或java來回答。提前致謝。

+2

int [] final = arr1.Concat(arr2).Concat (arr3).OrderBy(v => v).ToArray();' – Gusman

+0

@RayFischer我不能想出任何想法。我試圖在紙上寫一些工作,但我最終得到了很多循環,所以沒有嘗試任何。 – inanc

+0

@Gusman謝謝你的回答,我會在明天早上試試,並告訴你是否可行。 – inanc

回答

1

擴展在Gusman點評:

int[] final = arr1.Concat(arr2).Concat(arr3).OrderBy(v => v).ToArray(); 

使用.Concat(arr2)方法上arr1連接兩個陣列,並返回具有它們的值的組合的新的數組。

現在這個新的數組與arr3結合,再次返回一個新的數組,其中包含以前數組的所有值。

新數組現在傳遞給.OrderBy()擴展方法...它使用lambda表達式(您可以在lambda表達式上進行更多調查)。這個具體的lambda表達式將數組中的每個元素(=>的每一個元素)排序,並將其排序爲「本身」(右側=>)

+1

我不認爲它只是按元素排序。我認爲它是以第二個數組作爲第一個數組加入數組。這就是爲什麼給出的第二組數組拋出警告而不是按順序排序的數字。 – Chris

+0

阿哈你正在接受他的第二步,對不起,在回答時完全忘記了那一個......現在我想起了它,我根本不確定這個問題......我應該刪除答案嗎? –

+0

是的,這個問題很不明確。我不確定我的解釋是否正確,但我認爲它是。 :) – Chris