亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java數據結構實現順序表示例

2019-11-26 15:36:18
字體:
來源:轉載
供稿:網友

復制代碼 代碼如下:

import java.util.Arrays;
/**
 * 順序線性表的實現
 */
public class LineList<E>{

 private int size;   //長度
 private Object[] array;  //底層數組
 private final int default_length=16; //默認長度
 /**
  * 無參構造方法
  */
 public LineList(){
  size = 0;
  //使用默認長度構造數組
  array = new Object[default_length];
 }
 /**
  * 指定長度進行構造
  * @param length 指定初始長度
  */
 public LineList(int length){
  if(length<0){
   throw new IllegalArgumentException("初始長度不合法:"+length);
  }
  //使用指定長度構造數組
  array = new Object[length];
 }

 /**
  * 指定初始化元素和長度進行構造
  * @param element 初始化元素
  * @param length 初始化長度
  */
 public LineList(E element,int length){
  if(length<1){
   throw new IllegalArgumentException("初始長度不合法:"+length);
  }
  //使用指定長度構造數組
  array = new Object[length];
  //初始化第一個元素
  array[0] = element;
  size++;
 }
 /**
  * 指定初始化元素進行構造
  * @param element 初始化元素
  */
 public LineList(E element){
  //使用默認長度初始化數組
  array = new Object[default_length];
  //初始化第一個元素
  array[0] = element;
 }

 /**
  * 獲取元素個數
  */
 public int size() {
  return size;
 }

 /**
  * 判斷是否為空
  */
 public boolean isEmpty() {
  return size==0;
 }

 /**
  * 判斷是否包含此元素
  */
 public boolean contains(E e) {
  if(indexOf(e) == -1){
   return false;
  }
  return true;
 }

 /**
  * 格式化為數組
  */
 public Object[] toArray() {
  return Arrays.copyOf(array, size);
 }

 /**
  * 向線性表尾部添加一個元素
  * @param e
  * @return
  */
 public void add(E e) {
  extendCapacity(size+1);
  array[size]=e;
  size++;
 }

 /**
  * 擴容
  * @param length 需要的長度
  */
 private void extendCapacity(int length){
  //當前數組長度和需要的長度取最大
  int minCapacity = Math.max(array.length, length);
  //判斷是否需要擴容
  if(minCapacity - array.length>0){
   //數組長度增加一半
   int newLength = array.length + array.length/2;
   //如果新的長度還比需求要小,將需求的長度作為數組長度
   if(newLength < minCapacity){
    newLength=minCapacity;
   }
   //數組長度不能超過Integer.Max_Value
   if(newLength > Integer.MAX_VALUE - 8){
    newLength = Integer.MAX_VALUE;
   }
   //數組擴容
   array = Arrays.copyOf(array, newLength);
  }
 }
 /**
  * 從線性表中移除所有此元素
  * @param e 需要移除的元素
  * @return
  */
 public void removeAll(E e) {
  if(e==null){
   for(int i=0;i<size;i++){
    if(array[i]==null){
     fastRemove(i);
    }
   }
  }else{
   for(int i=0;i<size;i++){
    if(e.equals(array[i])){
     fastRemove(i);
    }
   }
  }
 }

 /**
  * 刪除索引處元素,后面的元素依次前移
  * @param index 需要刪除的索引
  */
 private void fastRemove(int index){
  if(size-index-1>0){  
   //數組從index+1開始全部前移
   System.arraycopy(array, index+1, array, index, size-1);
  }
  //最后一個元素請空
  array[--size]=null;
 }

 /**
  * 清空線性表
  */
 public void clear() {
  //將數組全部填充為null
  Arrays.fill(array, null);
  //將元素個數改為0
  size=0;
 }
 /**
  * 獲得索引處的元素
  * @param index
  * @return 索引處的元素
  */
 @SuppressWarnings("unchecked")
 public E get(int index) {
  checkIndex(index);
  return (E)array[index];
 }

 /**
  * 驗證是否為索引越界
  * @param index
  */
 private void checkIndex(int index){
  if(index>=size || index<0){
   throw new IndexOutOfBoundsException("索引越界");
  }
 }

 /**
  * 將索引處的元素修改為新的元素
  * @param index 索引位置
  * @param element 元素
  * @return 原索引處的元素
  */
 @SuppressWarnings("unchecked")
 public E set(int index, E element) {
  checkIndex(index);
  E e = (E)array[index];
  array[index]=element;
  return e;
 }

 /**
  * 在指定的索引處插入指定的元素
  * @param index 索引位置
  * @param element 元素
  */
 public void add(int index, E element) {
  //驗證索引
  checkIndex(index);
  //是否需要擴容
  extendCapacity(size+1);
  //復制數組
  System.arraycopy(array, index, array, index+1, size-index);
  array[index]=element;
 }

 /**
  * 移除索引處的元素
  * @param index 索引
  * @return 刪除了的元素
  */
 @SuppressWarnings("unchecked")
 public E remove(int index) {
  checkIndex(index);
  //取得索引位置的元素
  E e = (E)array[index];
  fastRemove(index);
  return e;
 }

 /**
  * 取得元素第一次出現的位置的索引
  * @param e 要查找的元素
  * @return 如果為-1說明線性表沒有這個元素
  */
 public int indexOf(E e) {
  if(e==null){
   for(int i=0;i<size;i++){
    if(e==array[i]){
     return i;
    }
   }
  }
  for(int i=0;i<size;i++){
   if(e.equals(array[i])){
    return i;
   }
  }
  return -1;
 }

 /**
  * 取得元素最后一次出現的位置的索引
  * @param e 要查找的元素
  * @return 如果為-1說明線性表沒有這個元素
  */
 public int lastIndexOf(E e) {
  //判斷元素是否為null
  if(e==null){    
   for(int i=size-1;i>=0;i--){
    if(e==array[i]){
     return i;
    }
   }
  }
  for(int i=size-1;i>=0;i--){
   //如果為null這里會跑出NullPoint異常
   //所以前面要加上驗證是否為Null
   if(e.equals(array[i])){
    return i;
   }
  }
  return -1;
 }

 /**
  * 截取線性表
  * @param fromIndex 開始索引
  * @param toIndex 結束索引
  * @return 截取的線性表
  */
 @SuppressWarnings("unchecked")
 public LineList<E> subList(int fromIndex, int toIndex) {
  //判斷開始索引是否越界
  if(fromIndex<0 || fromIndex >=size){
   throw new IndexOutOfBoundsException("開始索引越界:"+fromIndex);
  }
  //判斷結束索引是否越界
  if(toIndex >=size || fromIndex <0){
   throw new IndexOutOfBoundsException("結束索引越界:"+toIndex);
  }
  //判斷開始索引和結束索引是否正確
  if(fromIndex > toIndex){
   throw new IllegalArgumentException("參數不正確,開始索引應大于等于結束索引");
  }
  LineList<E> list = new LineList<E>();
  for(int i=fromIndex,j=toIndex;i<=j;i++){
   list.add((E)array[i]);
  }
  return list;
 }
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av综合网| 久久久久久有精品国产| 欧美黑人一区二区三区| 欧美一级视频免费在线观看| 欧美日韩加勒比精品一区| 久久精品视频亚洲| 日韩美女在线播放| 中文字幕精品av| 51久久精品夜色国产麻豆| 91精品国产综合久久香蕉最新版| 欧美寡妇偷汉性猛交| 欧美资源在线观看| 色偷偷噜噜噜亚洲男人| 亚洲美女中文字幕| 国产ts人妖一区二区三区| 大胆人体色综合| 日韩激情在线视频| 欧美精品午夜视频| 精品久久久香蕉免费精品视频| 日韩美女视频中文字幕| 亚洲有声小说3d| 日韩美女视频中文字幕| 亚洲精品国产精品国自产在线| 日韩欧美在线一区| 国产精品丝袜一区二区三区| 亚洲字幕在线观看| 韩日精品中文字幕| 亚洲国产天堂久久综合网| 日韩激情av在线免费观看| 久久精品免费播放| 在线日韩日本国产亚洲| 日本精品免费观看| 尤物tv国产一区| 一区二区三区无码高清视频| 欧美成人午夜激情在线| 久久久视频在线| 久久精品国产一区| 亚洲а∨天堂久久精品喷水| 国产91亚洲精品| 97视频在线观看免费高清完整版在线观看| 国产亚洲精品久久久| 国产主播喷水一区二区| 91精品国产自产91精品| 亚洲精品www| 少妇高潮久久77777| 国产精品一区二区三区成人| 国产精品久久999| 欧美疯狂性受xxxxx另类| 久久久久久久久久婷婷| 欧美成年人视频网站| 午夜精品久久久久久久久久久久久| 国产精品私拍pans大尺度在线| 国产欧美精品一区二区| 国产精品在线看| 国产91av在线| 久久久久成人精品| 欧美韩国理论所午夜片917电影| 色综合久综合久久综合久鬼88| 一区二区三区视频免费在线观看| 日韩av免费观影| 国产亚洲精品久久久久久777| 国产在线不卡精品| 国产欧美日韩视频| 国产精品久久久久久av下载红粉| 亚洲成在人线av| 国产精品精品一区二区三区午夜版| 亚洲色图日韩av| 久久久久久久久久国产精品| 亚洲综合自拍一区| 国产精品爽黄69天堂a| 97色在线观看| 欧美激情亚洲自拍| 欧美成人精品在线播放| 国产精品日韩久久久久| 91久久精品在线| 国产视频精品久久久| 久久国产精品亚洲| 欧美在线视频一区| 国产精品久久久久久久久免费| 国产日韩欧美91| 欧美日韩国产色视频| 欧美激情视频免费观看| 亚洲国产日韩欧美在线动漫| 日韩av电影免费观看高清| 国产视频丨精品|在线观看| 精品国产一区av| 国产精品都在这里| 亚洲自拍偷拍色片视频| 国产成人+综合亚洲+天堂| 亚洲大胆人体在线| 久久国产精品偷| 日韩在线观看免费av| 亚洲欧美国产一区二区三区| 欧美夫妻性视频| 国产精品主播视频| 欧美日韩国产91| 日韩av在线天堂网| 国产精品久久9| 欧美wwwwww| 91视频九色网站| xvideos国产精品| 国产日韩中文在线| 亚洲男子天堂网| 国产精品欧美久久久| 欧美精品www在线观看| 清纯唯美亚洲综合| 亚洲欧美资源在线| 亚洲欧美制服丝袜| 精品国产精品三级精品av网址| 精品视频一区在线视频| 亚洲午夜久久久影院| 精品国产户外野外| 日韩网站在线观看| 久久久久久久一区二区| 亚洲国产另类久久精品| 日韩成人激情视频| 亚洲香蕉成人av网站在线观看| 国产日韩换脸av一区在线观看| 主播福利视频一区| 日韩欧美一区二区在线| 91精品在线观看视频| 91精品国产综合久久香蕉最新版| 久久久免费高清电视剧观看| 日韩av在线免费观看一区| 亚洲欧美另类在线观看| 成人精品视频在线| 亲爱的老师9免费观看全集电视剧| 热re99久久精品国产66热| 久久久久久久亚洲精品| 日韩69视频在线观看| 自拍亚洲一区欧美另类| 国产亚洲人成网站在线观看| 97精品国产97久久久久久| 最近2019免费中文字幕视频三| 这里只有视频精品| 国产日韩亚洲欧美| 国产裸体写真av一区二区| 国产精品久久999| 欧美日韩激情美女| 久久亚洲国产精品| 欧美成人sm免费视频| 亚洲精品久久久久久下一站| 日韩欧美在线视频观看| 日韩成人在线视频| 影音先锋日韩有码| 国产精品美腿一区在线看| 九色成人免费视频| 欧美成在线观看| 91po在线观看91精品国产性色| 色av中文字幕一区| 欧美电影在线免费观看网站| 尤物yw午夜国产精品视频明星| 中文欧美在线视频| 2019国产精品自在线拍国产不卡| 国产一级揄自揄精品视频| 91精品国产91久久久久久最新| 中文在线不卡视频| 亚洲国产91精品在线观看| 久久国产精品久久久久久久久久| 18一19gay欧美视频网站| 日韩一级黄色av| 国产综合在线视频| 7777精品视频| 久久综合色88|