作者adrianshum (Alien)
看板java
標題Re: [問題] Integer[] 轉成 int[]
時間Mon May 11 17:29:44 2009
※ 引述《naboson (不能說的秘密)》之銘言:
: 標題: [問題] Integer[] 轉成 int[]
: 時間: Mon May 11 16:35:32 2009
:
:
: 如果現在手邊有一個 Integer[] 的陣列
:
: 想要把它轉為 int[]
:
: Integer[] origin;
:
: int[] result = new int[origin.length];
:
: for(int i=0; i<result.length; i++){
: result[i] = origin[i];
: }
:
: 上面這個最傳統的方法也還需要線性時間
:
: 請問還有比線性時間更快的方法嗎?
:
: ( 其實是想問java還有沒有其他好用的 function 可用~ :p)
:
: 謝謝
:
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.112.107.147
: 推 TonyQ:在現在都有auto-boxing 的狀況下 , 有特地需要對wrapper轉回 05/11 16:54
: → TonyQ:原型嗎o.oa 我是覺得應該是沒有不到o(n)的作法. 05/11 16:56
: 推 adrianshum:推樓上: 既然可 result[i]=origin[i] 就代表你是JDK1.5 05/11 17:25
推文太久... 回吧
既然可 result[i]=origin[i] 就代表你在用 JDK 1.5+,
已有 autoboxing/unboxing
那麼何必另外弄一個 int[]?
另, array copy 可用 System.arraycopy.
直接做 memory copy, 速度快很多. 但當然, 只限
同類 array (你這類應該沒輒)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.155.236.82
推 AI3767:我猜大概是因為需要int可以做bit運算吧... 05/12 01:20
→ adrianshum:Integer 也可以吧, compiler 會自動做 unboxing 05/12 11:17
推 AI3767:嗯嗯,方便性上是蠻好的.只是boxing/unboxing有overhead 05/12 12:25
→ adrianshum:我覺得不必瞎猜, 原po也沒說過為什麼要轉int[] 05/12 15:47