不必轉(zhuǎn)換,我早已熟透組合排列算法:java如下
成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元衢江做網(wǎng)站,已為上家服務(wù),為衢江各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話(huà):13518219792
import?java.util.Arrays;
import?java.util.LinkedList;
public?class?Guy
{
public?static?void?recursionSub?(?LinkedListint[]?list,?int?count,?int[]?array,?int?ind,?int?start,?int...?indexs?)
{
start++;
if?(start??count?-?1)
{
return;
}
if?(start?==?0)
{
indexs?=?new?int[array.length];
}
for?(?indexs?=?ind;?indexs??array.length;?indexs++?)
{
recursionSub?(list,?count,?array,?indexs?+?1,?start,?indexs);
if?(start?==?count?-?1)
{
int[]?temp?=?new?int[count];
for?(?int?i?=?count?-?1;?i?=?0;?i--?)
{
temp[start?-?i]?=?array[indexs[start?-?i]];
}
list.add?(temp);
}
}
}
public?static?void?main?(?String[]?args?)
{
int[]?array?=?{?1,?2,?3,?4,?5,?6,?7,?8,?9?};
LinkedListint[]?list?=?new?LinkedListint[]?();
recursionSub?(list,?3,?array,?0,?-1);
for?(?int[]?strings?:?list?)
{
System.out.println?(Arrays.toString?(strings));
}
}
}
javascript 和java都不是一個(gè)道理的,不是說(shuō)轉(zhuǎn)換就可以的,為什么很多人喜歡跨語(yǔ)言轉(zhuǎn)換代碼,你們?yōu)槭裁床荒苓@樣問(wèn)呢:如何用java來(lái)實(shí)現(xiàn)某種功能,豈不是更好?
package p1;
import java.util.Arrays;
import java.util.LinkedList;
public class Guy
{
public static void recursionSub ( LinkedListint[] list, int count, int[] array, int ind, int start, int... indexs )
{
start++;
if (start count - 1)
{
return;
}
if (start == 0)
{
indexs = new int[array.length];
}
for ( indexs = ind; indexs array.length; indexs++ )
{
recursionSub (list, count, array, indexs + 1, start, indexs);
if (start == count - 1)
{
int[] temp = new int[count];
for ( int i = count - 1; i = 0; i-- )
{
temp[start - i] = array[indexs[start - i]];
}
list.add (temp);
}
}
}
public static void main ( String[] args )
{
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
LinkedListint[] list = new LinkedListint[] ();
recursionSub (list, 3, array, 0, -1);
for ( int[] strings : list )
{
System.out.println (Arrays.toString (strings));
}
}
}
理解他的原理就好寫(xiě)了。
所有參數(shù)?排除?時(shí)間戳,按照字母順序排序,然后連接起來(lái)?和?appKey?以及?appSercet?進(jìn)行md5?運(yùn)算。
排序可以使用?String?[]keys?=?map.keyset().toarray()?獲取后使用?Collections?進(jìn)行sort。
有個(gè)類(lèi)似的,可以參考一下:
public?static?boolean?signVerify(String?appSecret,MapString,?String?params){
MapString,?String?map=new?HashMapString,?String();
map.put("appSecret",?appSecret);
for(String?key:params.keySet()){
if(!key.equals("sign")){
map.put(key,?params.get(key));
}
}
String?sign=sign(map);
if(sign.equals(params.get("sign"))){
return?true;
}
return?false;
}
private?static?String?toHexValue(byte[]?messageDigest)?{
if?(messageDigest?==?null)
return?"";
StringBuilder?hexValue?=?new?StringBuilder();
for?(byte?aMessageDigest?:?messageDigest)?{
int?val?=?0xFF??aMessageDigest;
if?(val??16)?{
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return?hexValue.toString();
}
/**
?*?
?*?@param?params
?*?@return
?*/
public?static?String?sign(MapString,String?params){
ListString?keys=new?ArrayListString(params.keySet());
Collections.sort(keys);
String?string="";
for(String?s:keys){
string+=params.get(s);
}
String?sign="";
try?{
sign?=?toHexValue(encryptMD5(string.getBytes(Charset.forName("utf-8"))));
}?catch?(Exception?e)?{
e.printStackTrace();
throw?new?RuntimeException("md5?error");
}
return?sign;
}
private?static?byte[]?encryptMD5(byte[]?data)throws?Exception{
MessageDigest?md5?=?MessageDigest.getInstance("MD5");
md5.update(data);
return?md5.digest();
}
public?static?void?main(String[]?args)?{
String?appKey="key";
String?appSecret="secret";
MapString,?String?params=new?HashMapString,?String();
params.put("appKey",?appKey);
params.put("appSecret",?appSecret);
params.put("date",?new?Date().getTime()+"");
String?sign=sign(params);
params.put("sign",?sign);
System.out.println(signVerify(appSecret,?params));
}
做不到. java和js僅僅是名字和語(yǔ)法長(zhǎng)得有點(diǎn)像, 但兩者是完全獨(dú)立的兩種語(yǔ)言, 兩者的功能和基礎(chǔ)api都完全不同. 這意味著你想把js代碼移植到j(luò)ava里不僅僅是要進(jìn)行語(yǔ)法上的翻譯, 還要把js里的各種基本函數(shù)都在java里實(shí)現(xiàn)一次, 例如你給的鏈接里的圖形顯示js是利用操作html元素和css實(shí)現(xiàn)的, 而在java里根本沒(méi)有這種東西, 想實(shí)現(xiàn)相同的功能基本要完全重寫(xiě)
java也可以在網(wǎng)頁(yè)上調(diào)用js, 但既然這里已經(jīng)用js都實(shí)現(xiàn)了, 再用java包一遍并沒(méi)有意義
package p1;
import java.util.Arrays;
import java.util.LinkedList;
public class Guy
{
public static void recursionSub ( LinkedListint[] list, int count, int[] array, int ind, int start, int... indexs )
{
start++;
if (start count - 1)
{
return;
}
if (start == 0)
{
indexs = new int[array.length];
}
for ( indexs = ind; indexs array.length; indexs++ )
{
recursionSub (list, count, array, indexs + 1, start, indexs);
if (start == count - 1)
{
int[] temp = new int[count];
for ( int i = count - 1; i = 0; i-- )
{
temp[start - i] = array[indexs[start - i]];
}
list.add (temp);
}
}
}
public static void main ( String[] args )
{
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
LinkedListint[] list = new LinkedListint[] ();
recursionSub (list, 3, array, 0, -1);
for ( int[] strings : list )
{
System.out.println (Arrays.toString (strings));
}
}
}
網(wǎng)站標(biāo)題:js轉(zhuǎn)換java代碼實(shí)現(xiàn),java代碼轉(zhuǎn)換器
鏈接分享:http://vcdvsql.cn/article30/heddso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站改版、網(wǎng)站內(nèi)鏈、網(wǎng)站營(yíng)銷(xiāo)、服務(wù)器托管、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)