当前位置: 首页 > news >正文

微网站怎么建设济南新风向网站建设

微网站怎么建设,济南新风向网站建设,wordpress有什么用,网站建设多语种自动翻译插件文章目录 前言一、什么是顺序表?1.1 顺序表的概念1.2 顺序表的建立 二、MyArrayList的实现三、顺序表的方法四、关于顺序表的例子总结 前言 提示:这里涉及到的ArrayList类是一个泛型类,同时后面的很多内容都会涉及到泛型,如果不了…

文章目录

  • 前言
  • 一、什么是顺序表?
    • 1.1 顺序表的概念
    • 1.2 顺序表的建立
  • 二、MyArrayList的实现
  • 三、顺序表的方法
  • 四、关于顺序表的例子
  • 总结


前言

提示:这里涉及到的ArrayList类是一个泛型类,同时后面的很多内容都会涉及到泛型,如果不了解泛型,可以在我给出的链接中查看了解一下,比较简单>>JAVA泛型<<


一、什么是顺序表?

1.1 顺序表的概念

概念的内容来源于>>ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素

它的本质就是一个数组。只不过这个数组在容量达到上限后会自动将数组进行扩容,但是,不是在同一个数组上而是返回一个扩容后的新数组,将原来数组上的内容复制到新的数组上,给我们一种直接扩容的感觉
在这里插入图片描述

在这里插入图片描述

1.2 顺序表的建立

import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName = new ArrayList<>();  // 初始化

在这里插入图片描述
补充内容
在这里插入图片描述
我当时想直接用original这个对象进行clone发现是不行的,List是个接口,不是个类,没有实现Cloneable接口,无法克隆。
同时Array.asList,这个方法返回的是一个固定的视图,
当我们想在这个对象中加数据时我们会发现
在这里插入图片描述
这是为什么呢?
解释:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Arrays.asList(1, 2, 3)返回的是一个java.util.Arrays.ArrayList类型的对象,它并不是java.util.ArrayList类型。虽然它们都实现了List接口,但不能直接进行强制类型转换。同时因为它们都实现了List接口,所以,以List 为类型的引用可以接收Arrays.asList的返回值
在这里插入图片描述

二、MyArrayList的实现

将需要实现的方法放在一个接口中,在通过自定义类实现这个接口

public interface IList {// 新增元素,默认在数组最后新增public void add(int data);// 在 pos 位置新增元素public void add(int pos, int data);// 判定是否包含某个元素public boolean contains(int toFind);// 查找某个元素对应的位置public int indexOf(int toFind);// 获取 pos 位置的元素public int get(int pos);// 给 pos 位置的元素设为 valuepublic void set(int pos, int value);//删除第一次出现的关键字keypublic void remove(int toRemove);// 获取顺序表长度public int size();// 清空顺序表public void clear();// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的public void display();
}

自定义的顺序表

import java.util.Arrays;public class MyArrayList implements IList{public int[] array;private static final int DEFAULT_CAPACITY = 10;public MyArrayList(){this.array = new int[DEFAULT_CAPACITY];}private int useSide;//判断数组是否满了private boolean isFull(int[] array){if(array.length == DEFAULT_CAPACITY){//如果长度等于初始容量,说明数组满了return true;}return false;}//扩容数组private int[] grow(int[] array){return Arrays.copyOf(this.array,array.length*2);}@Override// 新增元素,默认在数组最后新增public void add(int data) {if (isFull(this.array)){this.array = grow(this.array);}array[useSide] = data;useSide++;}//判断pos是否正确private void checkpos(int pos){try {if(pos < 0 || pos > this.useSide){throw new OutOfArrayException("越界异常");}}catch (OutOfArrayException e){e.printStackTrace();}}@Override// 在 pos 位置新增元素public void add(int pos, int data) {try {checkpos(pos);if (isFull(this.array)){this.array = grow(this.array);}for (int i = this.useSide - 1; i >= pos; i--) {array[i+1] = array[i];}array[pos] = data;this.useSide++;}catch (OutOfArrayException e){e.printStackTrace();}}@Override// 判定是否包含某个元素public boolean contains(int toFind) {for (int i = 0; i < this.useSide; i++) {if(toFind == this.array[i]){return true;}}return false;}@Override// 查找某个元素对应的位置public int indexOf(int toFind) {for (int i = 0; i < this.useSide; i++) {if(toFind == this.array[i]){return i;}}return -1;}private void isEmpty(int[] array){if(empty(array)){throw new IsEmptyException("空数组越界访问");}}private boolean empty(int[] array){return array.length == 0;}@Override// 获取 pos 位置的元素public int get(int pos) {try {checkpos(pos);isEmpty(this.array);return this.array[pos];}catch (OutOfArrayException | IsEmptyException e){e.printStackTrace();}return -1;}@Override// 给 pos 位置的元素设为 valuepublic void set(int pos, int value) {try {checkpos(pos);isEmpty(this.array);array[pos] = value;}catch (OutOfArrayException | IsEmptyException e){e.printStackTrace();}}@Override//删除第一次出现的关键字keypublic void remove(int toRemove) {try {isEmpty(this.array);int m = indexOf(toRemove);for (int i = m; i < this.useSide - 1; i++) {array[i] = array[i+1];}this.useSide--;}catch (IsEmptyException e){e.printStackTrace();}}@Override// 获取顺序表长度public int size() {return this.useSide;}@Override// 清空顺序表public void clear() {this.useSide = 0;}@Override// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的public void display() {for (int i = 0; i < this.useSide; i++) {System.out.print(array[i] + " ");}System.out.println();}
}

自定义的异常OutOfArrayException,超出数组范围

public class OutOfArrayException extends RuntimeException{public OutOfArrayException(){super();}public OutOfArrayException(String m){super(m);}
}

自定义异常,数组为空

public class IsEmptyException extends RuntimeException{public IsEmptyException(){super();}public IsEmptyException(String m){super(m);}
}

测试类

public class Test {public static void main(String[] args) {MyArrayList myArrayList = new MyArrayList();myArrayList.add(10);myArrayList.add(10);myArrayList.add(2,99);myArrayList.add(10);myArrayList.add(10);myArrayList.display();System.out.println(myArrayList.get(2));System.out.println(myArrayList.indexOf(10));}
}

三、顺序表的方法

在这里插入图片描述

四、关于顺序表的例子

题目来源>>杨辉三角<<
在这里插入图片描述

public class Test {public static List<List<Integer>> generate(int numRows) {if(numRows <= 0){return null;}List<List<Integer>> array = new ArrayList<>();for(int i = 0;i < numRows;i++){array.add(new ArrayList<>());}array.get(0).add(1);for(int i = 1 ; i < numRows ;i++){array.get(i).add(1);for(int j = 1; j < i; j++){array.get(i).add(array.get(i-1).get(j)+array.get(i-1).get(j-1));}array.get(i).add(1);}return array;}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int s = scanner.nextInt();List<List<Integer>> array = generate(s);for (int i = 0; i < s; i++) {System.out.println(array.get(i));}}
}

在这里插入图片描述

总结

本篇文章,介绍了有关顺序表的内容,包括什么是顺序表、如何实现自己的顺序表、以及使用顺序表解决问题的例子。

http://www.yayakq.cn/news/480224/

相关文章:

  • 鄢陵网站建设电脑建站网站开发项目方案书
  • 网站建设详细报价北京兼职做网站推广
  • 网站开发培训学校google浏览器官网下载
  • 赚钱黑渠道长春seo网络优化招聘网
  • 网站框架方案移动商城个人中心手机卡进度查询
  • 苏州做儿童场馆门票包票的网站免费安全网站认证
  • 珠海网站设计多少钱医疗网站建设基本流程
  • 怎样设计一个网站平台宜阳县网站建设
  • 如何评价一个网站做的好不好网站常用字体大小
  • 上海网站建设哪家口碑好做学校教务处网站
  • 港海(天津)建设股份有限公司网站网站建设与管理方案的总结
  • 简单的企业网站phpwordpress 当前页面 信息 输出
  • 网站建设添加展示栏营销型网站是啥
  • 做网站需要多少钱济宁html在线制作
  • wordpress网站建设要钱吗建网站设置网站首页
  • 苏州网站建设哪家更好帝国做的网站打开速度
  • 目前网站开发怎么兼顾手机ftp 上传 wordpress
  • 关键词带淘宝的网站不收录南通网站建设费用
  • 做网站模板平台wordpress 源码交付
  • 万江东莞网站建设注册公司网上核名流程
  • 营销型网站建设方案怀来网站建设
  • 泗水县城乡建设局网站html拖拽代码生成器
  • 通付盾 网站建设公司曲靖市建设局网站
  • 自己注册个公司做网站怎么样做直播信号网站
  • 邮箱注册网站营销策划思路
  • 怎么制作一个网站首页深圳网络营销外包好吗
  • wordpress删除管理站点链接微信小程序可做购物网站吗
  • 建设银行代发工资清单网站wordpress标题相关
  • 网站做rss wordpress网站的虚拟人怎么做的
  • 河南省重点项目建设网站免费加速器试用一小时