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

php网站前后台源代码音乐门户网站模板

php网站前后台源代码,音乐门户网站模板,中国国家人才培训网官网,产品外观设计报价一、顺序表概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构#xff0c;一般情况下采用数组存储。在数组上完成数据的增删查改。 二、主要功能接口实现 Java顺序表底层就是一个动态数组。其主要功能接口如下#xff1a; // 1.打印顺序表#xff0…一、顺序表概念 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构一般情况下采用数组存储。在数组上完成数据的增删查改。 二、主要功能接口实现 Java顺序表底层就是一个动态数组。其主要功能接口如下 // 1.打印顺序表注意该方法并不是顺序表中的方法为了方便看测试结果给出的 public void display() { } // 2.新增元素,默认在数组最后新增 public void add(int data) { } // 3.判断当前的顺序表是不是满的 public boolean isFull() { } // 4.在 pos 位置新增元素 public void add(int pos, int data) { } // 5.判定是否包含某个元素 public boolean contains(int toFind) { return true; } // 6.查找某个元素对应的位置 public int indexOf(int toFind) { return -1; } // 7.获取 pos 位置的元素 public int get(int pos) { return -1; } // 8.给 pos 位置的元素设为 value public void set(int pos, int value) { } // 9.删除第一次出现的关键字 key public void remove(int toRemove) { } // 10.获取顺序表长度 public int size() { return 0; } // 11.清空顺序表 public void clear() { }下面我们对应上面的功能接口自己实现一下顺序表由于这部分比较简单这里就直接给出代码大家可结合注释参考。另外此处侧重于流程实现使用了更好理解的int类型并未使用泛型 import java.util.Arrays; public class MyArraylist {public int[] elem;// 已使用容量初始为0public int usedSize;// 默认容量private static final int DEFAULT_SIZE 5;// 这里采用无参的构造方法public MyArraylist() {this.elem new int[DEFAULT_SIZE];}/*** 1.打印顺序表 * 注意该方法并不是顺序表中的方法为了方便看测试结果给出的* 根据usedSize判断即可*/public void display() {for (int i 0; i this.usedSize; i) {System.out.print(this.elem[i] );}}/*** 2.新增元素,默认尾插*/ public void add(int data) {if (isFull()) {resize();}this.elem[this.usedSize] data;this.usedSize;}// 扩容private void resize() {this.elem Arrays.copyOf(this.elem, 2 * this.elem.length);}// 检查坐标合法性private void checkPosInAdd(int pos) {if (pos 0 || pos this.usedSize) {// 这里自定义异常类throw new IndexException(位置不合法请检查位置的合法性);}}/*** 3.判断当前的顺序表是不是满的*/public boolean isFull() {return this.usedSize this.elem.length;}/*** 4.在 pos 位置新增元素*/public void add(int pos, int data) {if (isFull()) {resize();}checkPosInAdd(pos);for (int i this.usedSize; i pos; i--) {this.elem[i] this.elem[i - 1];}this.elem[pos] data;this.usedSize;}/*** 5.判定是否包含某个元素*/public boolean contains(int toFind) {for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return true;}}return false;}/*** 6.查找某个元素对应的位置*/public int indexOf(int toFind) {for (int i 0; i this.usedSize; i) {if (this.elem[i] toFind) {return i;}}return -1;}/*** 7.获取 pos 位置的元素*/public int get(int pos) {checkPosInAdd(pos);return this.elem[pos];}// 判空private boolean isEmpty() {if (this.usedSize 0) {return true;}return false;}/*** 8.将 pos 位置的元素设为修改为 value*/public void set(int pos, int value) {checkPosInAdd(pos);this.elem[pos] value;}/*** 9.删除第一次出现的关键字key*/public boolean remove(int key) {int index indexOf(key);if (index -1) {System.out.println(不存在关键字 key);return false;}for (int j index; j this.usedSize - 1; j) {this.elem[j] this.elem[j 1];}this.usedSize--;//注意是在这条语句之后//elem[usedSize] null;// 如果里面是引用类型 那么此时就需要手动置空elem[usedSize] 0;return true;}/*** 10.获取顺序表长度*/ public int size() {return this.usedSize;}/*** 11.清空顺序表*/ public void clear() {this.usedSize 0;} }上述过程中自定义的异常类 public class IndexException extends RuntimeException {// 帮助父类构造IndexException() {super();}IndexException(String msg) {super(msg);} }三、Java集合框架中的 ArrayList 在 java.util 包下为我们提供了一个ArrayList类ArrayList底层是一段连续的空间并且可以动态扩容是一个动态类型的顺序表且这里的 ArrayList 是以泛型方式实现的使用时必须要先实例化。此外在Java中还对ArrayList有以下这些说明现阶段不做解释大家可以暂时了解即可 ArrayList实现了RandomAccess接口表明ArrayList支持随机访问ArrayList实现了Cloneable接口表明ArrayList是可以clone的ArrayList实现了Serializable接口表明ArrayList是支持序列化的和Vector不同ArrayList不是线程安全的在单线程下可以使用在多线程中可以选择Vector或者 CopyOnWriteArrayList 1、ArrayList的构造方法 方法解释ArrayList()无参构造ArrayList(Collection? extends E c)利用其他 Collection 构建 ArrayListArrayList(int initialCapacity)指定顺序表初始容量 解释 对于无参构造方法ArrayList()在实例化ArrayList对象时不会分配内存在add()方法中才进行内存分配。对于ArrayList(Collection? extends E c)表示可以将实现了Collection接口、并且是E类型或E类型的子类的集合作为参数构造ArrayList。相比之下ArrayList(int initialCapacity)就比较好理解了这个构造方法是在实例化ArrayList对象时分配指定initialCapacity大小的容量。 2、ArrayList常用方法 与此同时ArrayList下为我们提供了大量的方法其中常见操作方法如下 方法解释boolean add(E e)尾插 evoid add(int index, E element)将 e 插入到 index 位置boolean addAll(Collection? extends E c)尾插 c 中的元素E remove(int index)删除 index 位置元素boolean remove(Object o)删除遇到的第一个 oE get(int index)获取下标 index 位置元素E set(int index, E element)将下标 index 位置元素设置为 elementvoid clear()清空boolean isEmpty()如果此列表不包含元素则返回 trueint size()返回此列表中的元素数boolean contains(Object o)判断 o 是否在线性表中int indexOf(Object o)返回第一个 o 所在下标int lastIndexOf(Object o)返回最后一个 o 的下标List subList(int fromIndex, int toIndex)截取部分 list 3、ArrayList 的继承关系 在《Java集合框架中》我们介绍了Java集合中的继承关系你是否还有印象ArrayList实现了List接口 对于List接口来说里面涵盖了ArrayList中的方法也就是说我们可以使用 List 接口对 ArrayList 实例进行操作因此我们可以写出类似这种调用方式ListInteger list new Arraylist(); 将ArrayList实例交给List接口然后直接使用list进行相关操作。 public class OperateTest {public static void main(String[] args) {ListInteger list new ArrayList();list.add(111);list.add(222);list.add(333);list.add(444);list.add(555);System.out.println(list);// 设定list2-[1,2,3] 便于测试addAll()ListInteger list2 new ArrayList();list2.add(1);list2.add(2);list2.add(3);// 末尾插入list2list.addAll(list2);System.out.println(list);// 获取list中有效元素个数System.out.println(list.size());// 获取和设置index位置上的元素注意index必须介于[0, size)间System.out.println(list.get(0));list.set(0, 999);System.out.println(list.get(0));// 在list的index位置插入指定元素index及后续的元素统一往后搬移一个位置list.add(1, 888);System.out.println(list);// 删除指定元素找到了就删除该元素之后的元素统一往前搬移一个位置// (这里如果直接写444会默认下标需要使用引用类型)list.remove(new Integer(444));System.out.println(list);// 删除list中index位置上的元素注意index不要超过list中有效元素个数,否则会抛出下标越界异常list.remove(list.size()-1);System.out.println(list);// 检测list中是否包含指定元素包含返回true否则返回falseif(!list.contains(123456)){list.add(123456);System.out.println(list);}// 查找指定元素第一次出现的位置indexOf从前往后找lastIndexOf从后往前找System.out.println(list.indexOf(333));System.out.println(list.lastIndexOf(333));// 使用list中[0, 4)之间的元素构成一个新的SubList返回,// 但是和ArrayList共用一个elementData数组(对任一部分修改会影响整个部分)ListInteger ret list.subList(0, 2);System.out.println(ret);// 清空list.clear();System.out.println(list.size());} }4、ArrayList的遍历 1 方式一 使用for循环下标遍历 for (int i 0; i list.size(); i) {System.out.println(list.get(i)); }2 方式二 由于List、Arraylist集合实现了iterable接口可以使用增强的for循环-foreach for (Integer x:list) {System.out.println(x); }3 方式三 对于Java而言只要实现了Iterable接口的集合就可以使用迭代器 iterator IteratorInteger it list.listIterator(); while(it.hasNext()){System.out.println(it.next()); }总结 本篇文章主要介绍了 Java 集合中的线性结构 ArrayList 这是一个相对比较简单且容易理解和实现的数据结构。这里就简单总结一下顺序表 ArrayList的优缺点 顺序表缺点 ArrayList底层使用连续的空间任意位置插入或删除元素时需要将该位置后序元素整体往前或者往后搬移故时间复杂度为O(N)增容需要申请新空间拷贝数据释放旧空间。会有不小的消耗。增容一般是呈倍数增长。假如以2倍扩容势必会有一定的空间浪费例如当前容量为100满了以后增容到200我们再继续插入了5个数据后面没有数据插入了那么就浪费了95个数据空间。 顺序表优点 当给定下标的时候查找速度非常快复杂度为O(1)
http://www.sadfv.cn/news/203162/

相关文章:

  • 农安县住房和城乡建设厅网站网站建设规划书样板
  • 哈尔滨php网站开发公司仿西部数码网站
  • 杭州做企业网站的公司做爰小视频网站
  • 哈尔滨大型网站建设贴吧网站怎么做
  • 做一个免费网站的流程汽车网站建设参考文献开题报告
  • 做美工用的网站网站公共模板是什么意思
  • 深圳定制网站建设服务公司网站和app可以做充值余额功能
  • 去视频网站做编辑网站建设公司好做吗
  • 购物帮 做特惠的导购网站无锡网络营销推广软件
  • 珠海做网站制作关键词网站推广
  • 网站开发合同适用印花税wordpress自定义文章类型模板
  • 温州网站关键词推广做亚马逊网站一般发什么快递
  • 广安市国土资源局网站建设银行系统网站模板
  • 网站开发 之cookie一个企业做网站的意义
  • 青海建设工程信息网站网易企业邮箱登录入口网页版
  • 做seo营销网站wordpress jae
  • 济南网站建设 选聚搜网络网络营销产品的概念举例
  • 做网站哪些公司娄底网站推广
  • 汉中市建设工程质量安全监督站官网江西省上饶市建设局网站
  • 郑州东站附近网站建设公司明年房价走势最新消息
  • 高端网站建设免费分析erp软件多少钱一套
  • 网站源码 带后台百度站长平台诊断
  • 北京网站建设手机app电子商务类似淘宝网站建设费用
  • 做rap的网站高端网站建设要到磐石网络
  • 百度竞价 十一 pc网站 手机网站网页设计公司招聘
  • 晋城网络公司做网站的域名服务商网站
  • 做淘宝客最好的网站是什么网站小程序登录注册
  • 查学校去哪个网站百度站点提交工具
  • 网站正在建设中单页河北网站开发联系电话
  • 做电影网站怎么拿到版权网站怎么重装wordpress