最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 將方法作為傳參--多態(tài)的實例

 更新時間:2017年09月26日 08:42:52   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava 將方法作為傳參--多態(tài)的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在前段時研究智能算法時,發(fā)現(xiàn)如果使用java進(jìn)行實現(xiàn)的話,往往具體實現(xiàn)過程差不多,但是適應(yīng)值函數(shù)卻根據(jù)

研究對象的不同發(fā)生很大的改變,這樣對代碼的維護(hù)產(chǎn)生很大的阻礙,于是產(chǎn)生的一個疑問:可不可以將適應(yīng)值函數(shù)

作為參數(shù)傳入到方法中,根據(jù)C/C++的習(xí)慣的話,由于指針的存在,可以將函數(shù)作為指針傳入,由于指針使用的復(fù)雜

性以及難維護(hù)性,效果一般。如果換一種面向?qū)ο蟮乃枷耄梢韵朐O(shè)計一個接口I,這個接口只提供一個方法,那么相

當(dāng)于可以將接口作為參數(shù)傳入到方法中,調(diào)用時只需要將設(shè)計一個類,實現(xiàn)接口I,那么就可以將函數(shù)傳入到方法中了。

下面以0.618黃金搜索法為例,由于目標(biāo)函數(shù)的不同,滿足上面所敘述的,注意這種搜索只能時單峰的函數(shù)才可行,

算法如下圖所示:

1.首先創(chuàng)建一個接口,這個接口只有一個適應(yīng)值的方法:

public interface Fitness {
 public double getFitness(double X);
}

2.創(chuàng)建一個類,簡單實現(xiàn)上面0.618搜索的方法:

public class stationUtils{/***
 * 黃金分割搜索法,尋找最小值的函數(shù)
 * @param min 搜索上限
 * @param max 搜索下限
 * @param fitness 函數(shù)值
 * @return
 */
 public double goldenSearch(double min,double max,Fitness fitness){
  /*double X1=min+0.382*(max-min);*/
  double a=doubleOperation.substract(max,min);
  double X1=doubleOperation.add(min,doubleOperation.multiply(0.382,a));
  /*double X2=min+0.618*(max-min);*/
  double X2=doubleOperation.add(min,doubleOperation.multiply(0.618,a));
  double F1=fitness.getFitness(X1);
  double F2=fitness.getFitness(X2);
  while(Math.abs(doubleOperation.substract(X1,X2))>delt){
   if(F1<F2){
   max=X2;
   X2=X1;
   F2=F1;
   X1=min+0.382*(max-min);
   F1=fitness.getFitness(X1);
   }else{
   min=X1;
   X1=X2;
   F1=F2;
   X2=min+0.618*(max-min);
   F2=fitness.getFitness(X2);
   }
  }
  return doubleOperation.divide(doubleOperation.add(max,min),2);

 }
}

3.在創(chuàng)建一個類,用來實現(xiàn)Fitness接口,也就是將自己目標(biāo)函數(shù)寫進(jìn)去,這里以一元二次函數(shù)為例:

 public class Func implements Fitness{
  @Override
  public double getFitness(double X) {
   return X*X- 3 * X + 1;
  }
 }

4.簡單調(diào)用一下:

 @Test
 public void run1(){
  Func func=new Func();
  double result=stationUtils.goldenSearch(-2.00,4.00,func);
  System.out.println(result);
 }

總結(jié),加入傳入的參數(shù)比較多,可以將值傳入到接口實現(xiàn)類中,那么getFitness這個方法就可以訪問這個參數(shù)了。

以上這篇java 將方法作為傳參--多態(tài)的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java經(jīng)典排序算法之希爾排序詳解

    Java經(jīng)典排序算法之希爾排序詳解

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之希爾排序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • java多線程和并發(fā)包入門示例

    java多線程和并發(fā)包入門示例

    這篇文章主要寫了java多線程的使用方法和java并發(fā)包簡單入門的示例,大家可以參考使用
    2013-11-11
  • 詳解Java中的Lambda表達(dá)式

    詳解Java中的Lambda表達(dá)式

    Lambda表達(dá)式是Java SE 8中一個重要的新特性。這篇文章主要介紹了Java中的Lambda表達(dá)式 ,需要的朋友可以參考下
    2019-04-04
  • Java基于IO流讀取文件的方法

    Java基于IO流讀取文件的方法

    這篇文章主要介紹了Java基于IO流讀取文件的方法,涉及Java文件流操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • SpringBoot使用榛子云實現(xiàn)手機(jī)短信發(fā)送驗證碼

    SpringBoot使用榛子云實現(xiàn)手機(jī)短信發(fā)送驗證碼

    發(fā)送驗證碼主要用于驗證用戶手機(jī)的合法性及敏感操作的身份驗證,本文使用了SpringBoot實現(xiàn),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Spring MVC 與 CORS跨域的詳細(xì)介紹

    Spring MVC 與 CORS跨域的詳細(xì)介紹

    本文介紹了 CORS 的知識以及如何在 Spring MVC 中配置 CORS,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android 判斷真機(jī)和模擬器的方法

    Android 判斷真機(jī)和模擬器的方法

    這篇文章主要介紹了 Android 判斷真機(jī)和模擬器的方法的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • Java中CAS機(jī)制實現(xiàn)方法詳解

    Java中CAS機(jī)制實現(xiàn)方法詳解

    傳統(tǒng)的并發(fā)控制手段如synchronized和ReentrantLock雖有效防止資源競爭,卻可能引起性能開銷,相比之下,CAS(CompareAndSwap)提供一種輕量級的樂觀鎖策略,通過硬件級別的原子指令實現(xiàn)無鎖并發(fā),提高性能,需要的朋友可以參考下
    2024-09-09
  • java線程并發(fā)semaphore類示例

    java線程并發(fā)semaphore類示例

    Java 5.0里新加了4個協(xié)調(diào)線程間進(jìn)程的同步裝置,它們分別是Semaphore, CountDownLatch, CyclicBarrier和Exchanger,本例主要介紹Semaphore,Semaphore是用來管理一個資源池的工具,可以看成是個通行證
    2014-01-01
  • 如何解決Maven依賴無法導(dǎo)入的問題

    如何解決Maven依賴無法導(dǎo)入的問題

    本文介紹了如何通過在setting.xml中配置倉庫坐標(biāo)和在IntelliJ IDEA中進(jìn)行相關(guān)設(shè)置來提高M(jìn)aven下載Jar包的速度,首先在setting.xml中找到mirrors標(biāo)簽進(jìn)行配置,然后在IntelliJ IDEA的設(shè)置中輸入特定的命令
    2024-10-10

最新評論

蓬莱市| 兴宁市| 天台县| 福安市| 利津县| 梅河口市| 蚌埠市| 朝阳市| 乐昌市| 临城县| 滕州市| 京山县| 麻江县| 保山市| 南平市| 吴旗县| 永年县| 右玉县| 东辽县| 霍州市| 前郭尔| 沂源县| 新密市| 佳木斯市| 固镇县| 孝义市| 岫岩| 沾益县| 邵武市| 西吉县| 海丰县| 梅河口市| 阳曲县| 楚雄市| 和田市| 莱阳市| 阿鲁科尔沁旗| 宝兴县| 巴马| 建始县| 息烽县|