<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      (數(shù)據(jù)結(jié)構(gòu)代碼,總結(jié),自我思考)=> { return 個(gè)人學(xué)習(xí)筆記; } 【To be continued~】

      俗話說(shuō) “學(xué)而不思則罔”,是時(shí)候復(fù)習(xí)和整理一下自己先前的學(xué)習(xí)歷程了!

      Chapter-One

      《BinarySearch》

      public static int binarySearch (int[] a, int target) {
              int i = 0, j = a.length - 1;
              
              while (i <= j) {
                  int m = (i + j) >>> 1; // 求中位數(shù),但是是用位運(yùn)算符的方式,相對(duì)于除法,這種方式更加高效
                 if (target < a[m]) {
                     j = m - 1; // 如果找到的目標(biāo)數(shù)小于中位數(shù),則在中位數(shù)的左邊開始找起
                 } else if (a[m] < target){
                     i = m + 1; // 如果找到的目標(biāo)數(shù)大于中位數(shù),則在中位數(shù)的右邊開始找起
                 } else {
                     return m; // 找到則直接返回改數(shù)值在數(shù)組中的索引的值
                 }
              }
              return -1;  /* 沒有找到則直接返回-1,當(dāng)然這里選擇拋出異常(并提示異常信息,個(gè)人覺得對(duì)用戶體驗(yàn)更加好 如: )  throw new RuntimeException("目標(biāo)數(shù)值不在數(shù)組中"); */
          }
      

      自問自答

         問:為什么while的條件中 i <= j 而不是 [instead of] i < j ?
         答:1. 首先,顧名思義,前面的條件會(huì)比后面的條件多執(zhí)行一次。
            2. 那如果當(dāng) target == i == j 的時(shí)候呢,那少去的這一次就會(huì)因?yàn)椴粷M足while條件直接退出循環(huán)了,然后放回直接沒有找到的該目標(biāo)值。因此為了避免這種情況的發(fā)生,我們應(yīng)該加上等于號(hào)。
      

      《DynamicArray》

      import java.util.Arrays;
      import java.util.Iterator;
      import java.util.function.Consumer;
      import java.util.stream.IntStream;
      
      public class DynamicArray implements Iterable<Integer> {
          private int size = 0; // 數(shù)組中存儲(chǔ)元素的個(gè)數(shù)
          private int capacity = 8; // 數(shù)組的容量大小
          private int[] array = {};
      
      
          public void addLast(int element) { // 在數(shù)組的尾部添加元素
      //        array[size] = element;
      //        size++;   the original thought
              add(size,element);
          }
      
          public void add(int index, int element) {
              checkAndGrow(); // 判斷需要?jiǎng)討B(tài)擴(kuò)容的模式
              if (index >=0 && index < size) {
                  System.arraycopy(array, index,
                          array, index + 1, size - index); // 使用java自帶的內(nèi)置API,進(jìn)行數(shù)組的復(fù)制
              } else if (index < 0) {
                  throw new RuntimeException("index typing wrong, retry again please!");
              }
              array[index] = element;// 指定的位置對(duì)元素進(jìn)行添加
              size++; // 更新數(shù)組元素個(gè)數(shù)
          }
      
          private void checkAndGrow() {
              //check
              if (size == 0) {
                  array = new int[capacity];// 等于0時(shí),默認(rèn)初始化的容量
              } else if (size == capacity) {
                  capacity += capacity >> 1; // 擴(kuò)容1.5倍
                  int[] newArray = new int[capacity];
                  System.arraycopy(array, 0,
                          newArray, 0, size); // 數(shù)組復(fù)制
                  array = newArray;
              }
          }
      
          public int get(int index) { // 獲取數(shù)組中指定的元素
              return array[index];
          }
      
          public void foreach(Consumer<Integer> consumer) { //遍歷數(shù)組元素
              for (int i = 0; i < size; i++) {
                  consumer.accept(array[i]);
              }
          }
      
          @Override
          public Iterator<Integer> iterator() { // 迭代器
              return new Iterator<Integer>() {
                  int i = 0;
                  @Override
                  public boolean hasNext() { // 判斷是否有下一個(gè)元素
                      return i < size;
                  }
      
                  @Override
                  public Integer next() { // 返回當(dāng)前元素,并且指針向后面移動(dòng)一位
                      return array[i++];
                  }
              };
      
          }
      
      
          public IntStream stream() { // 將數(shù)組轉(zhuǎn)成int字節(jié)流
              return IntStream.of(Arrays.copyOfRange(array,0,size)); //[0,size)
          }
      
      
          public int remove(int index) { //移除指定的 范圍:[0,size)
              int removed = array[index];
              if (index < size - 1) {
                      System.arraycopy(array, index + 1,
                              array, index, size - index - 1);
                  }
              size--;
              return removed;
          }
      }
      

      自問自答

       	問:箭頭函數(shù)在這里的用法?
       	答 1. foreach方法中定義的參數(shù),類似一個(gè)集合的作用,把數(shù)組中所有的遍歷之后的元素都存起來(lái)了
       	   2. 因此在調(diào)用的階段,我們直接傳一個(gè)(whatever)形參,然后在 {代碼塊中},我們可以對(duì)該參數(shù)做任何我們想做的事情或者實(shí)現(xiàn)想要實(shí)現(xiàn)的功能。
       	   3. 相當(dāng)于是,內(nèi)部收集到了這個(gè)數(shù)組的值,但是這個(gè)值有什么用途,留給調(diào)用這個(gè)方法的用戶去決定了。
      

      在這里插入圖片描述
      example

      @Test
          public void test2() {
              DynamicArray dynamicArray = new DynamicArray();
              AtomicInteger sum = new AtomicInteger(); // 把變量設(shè)置為原子狀態(tài)的Integer包裝類型
              dynamicArray.addLast(1);
              dynamicArray.addLast(2);
              dynamicArray.addLast(3);
              dynamicArray.addLast(4);
      
              dynamicArray.forEach((element)->{
                  sum.addAndGet(element);// 對(duì)element的所有元素進(jìn)行相加, 這里返回值是int,但是我選擇不接收。
              });
      
              System.out.println(sum.get()); //輸出累加的結(jié)果!
          }
      

      運(yùn)行結(jié)果

      未完待續(xù)······

      posted @ 2024-04-20 17:22  Lucas~  閱讀(25)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产日韩综合av在线| 人妻一区二区三区三区| 国产美熟女乱又伦AV果冻传媒| 无码福利一区二区三区| 乱码中文字幕| 日区中文字幕一区二区| 精品国产成人国产在线观看 | 亚洲第一最快av网站| a级黑人大硬长爽猛出猛进| 日本一道高清一区二区三区| 激情综合五月| 国内揄拍国内精品人妻久久| 久久综合给合久久狠狠97色| 无码国产偷倩在线播放| 一本色道久久—综合亚洲| 丝袜国产一区av在线观看| 欧美一区二区三区欧美日韩亚洲| 精品嫩模福利一区二区蜜臀| 麻豆一区二区中文字幕| 亚洲区成人综合一区二区| 国产老妇伦国产熟女老妇高清 | 高潮精品熟妇一区二区三区| 国产精品视频午夜福利| 一色屋精品视频在线观看| 极品少妇的粉嫩小泬看片| 国产中文字幕一区二区| 丝袜美腿一区二区三区| 精品蜜臀国产av一区二区| 国产精品自拍午夜福利| 国产成人精品电影在线观看| 亚洲欧美成人综合久久久| 在线看无码的免费网站| 濮阳县| 精品视频在线观看免费观看| 无码国模国产在线观看免费| 国产综合色在线精品| 日本欧美大码a在线观看| 国产成人啪精品午夜网站| 精品亚洲精品日韩精品| 精品国产成人a在线观看| 女女互揉吃奶揉到高潮视频|