我有一個方法getFormattedValue(List<String> dataHeaders, List<String> data)
,它返回基於String值的dataHeaders和數據列表的內容。 dataHeaders列表可以有10個不同的值,並基於特定索引輸出字符串形成更改的值。需要重新設計動態輸入的現有邏輯
下面的代碼工作正常,當dataHeaders內容按特定順序接收時,但最近這個順序一次又一次地改變。由於此輸入是從其他應用程序/系統收到的,因此我無法控制元素的順序。因此,我想更新我的代碼,以便它在輸入順序改變後仍能正常工作。
如果dataHeaders列表的第一個元素是「OPERATION_NAME」,那麼我不需要採取任何行動,但是如果「OPERATION_NAME」出現在dataHeaders列表中的第二個索引處,那麼我需要執行特殊的格式輸出值。等等......
我的痛苦是我收到10個dataHeaders。請給我建議處理這個問題的好方法。我在下面發佈我的代碼,歡迎提供建議。
import java.util.ArrayList;
import java.util.List;
public class ValueGenerator {
public String getFormattedValue(List<String> dataHeaders, List<String> data){
String formattedOutValue=null;
if(dataHeaders!=null && data!=null &&
dataHeaders.size() == data.size()){
if(dataHeaders.get(0).equals("OPERATION_NAME")){
formattedOutValue=data.get(0); // Add no spaces
}else if(dataHeaders.get(1).equals("OPERATION_NAME")){
formattedOutValue=data.get(1)+" "; // Add 4 blank spaces
}else if(dataHeaders.get(2).equals("OPERATION_NAME")){
formattedOutValue=data.get(2)+" "; // Add 6 blank spaces
}
}
//likewise i want to avoid redundant if - else if check
return formattedOutValue;
}
}
是的,這是錯字,糾正它。我真正的問題開始後,我知道索引,因爲索引號變化,所以我的邏輯返回形式的字符串。如果不這樣做,我會需要一些通用的解決方案。 –
@DarkKnight我編輯了代碼,使其更清晰。指數究竟意味着什麼?你知道索引可以擁有的最大數量嗎(你似乎,因爲你提到了10個數據頭)?如果那麼只要把他們所有的格式都放到地圖上。如果不是,那麼您可以根據列表的大小動態地構建相同的地圖。 – A4L
非常感謝您的快速響應,索引不盡相同,我的意思是說可以有20個左右的預定義標頭出現,並且每個標頭都有基於索引的不同價值體系。採用目前的方法,我們需要創建20個地圖。有沒有其他的選擇可以一般地做到這一點。請建議。 –