[英]Convert object[][] to ArrayList<Object[]>
我想可能在我的帖子之前已經多次詢問/回答了這個問題。 但我無法得到我想要的東西,所以我再次發布:
我想這樣做:
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<Float[]> AF = new ArrayList<Float[]>();
AF = Arrays.asList(fa2);
但它給出了一個錯誤:
Type mismatch: cannot convert from List<float[]> to ArrayList<Float[]>
我理解錯誤的原因但是在Java中進行轉換的最方便的方法是什么?
這是我能想到的最簡單的方法。 有更好/更方便的東西嗎?
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<Float[]> AF = new ArrayList<Float[]>(fa2.length);
for (float[] fa : fa2) {
//initialize Float[]
Float[] Fa = new Float[fa.length];
//copy element of float[] to Float[]
int i = 0;
for (float f : fa) {
Fa[i++] = Float.valueOf(f);
}
//add Float[] element to ArrayList<Float[]>
AF.add(Fa);
}
當你從float[]
轉換為Float[]
你必須手動完成:
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<Float[]> AF = new ArrayList<Float[]>();
for(float[] fa: fa2) {
Float[] temp = new Float[fa.length];
for (int i = 0; i < temp.length; i++) {
temp[i] = fa[i];
}
AF.add(temp);
}
或者你可以一直使用float[]
:
List<float[]> AF = Arrays.asList(fa2);
這對我來說:
float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}};
List<float[]> AF = Arrays.asList(fa2);
編輯:如果由於某種原因你必須混合float []和Float []使用Apache Commons ArrayUtils.toObject
float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}};
List<Float[]> AF = new ArrayList(fa2.length);
for (float[] fa : fa2) {
AF.add(ArrayUtils.toObject(fa));
}
另一種方法可以做到這一點:
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
ArrayList<float[]> AF = new ArrayList<float[]>((Collection<float[]>)Arrays.asList(fa2))
我忘了添加演員......修好了。
你可以這樣做,你不需要轉換:
Float[][] test = {{2f,3f},{3f,4f}};
允許將Java中的本機包裝為更改為對象的概念稱為AutoBoxing,此處正在使用它。 但是,要實現這一點,您要么必須明確說明數字是浮點數還是使用(浮點數)轉換它們。
嘗試
float[][] fa2 = {{7,2}, {5,4}, {9,6}, {4,7}, {8,1}, {2,3}};
List<float[]> af = Arrays.asList(fa2);
要么
Float[][] fa2 = {{7f,2f}, {5f,4f}, {9f,6f}, {4f,7f}, {8f,1f}, {2f,3f}};
List<Float[]> af = Arrays.asList(fa2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.