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

网站被k十大原因贸易公司寮步网站建设哪家好

网站被k十大原因,贸易公司寮步网站建设哪家好,网站开发技术合同,网络推广方案swot分析目录 一、线性表 二、顺序表 1、接口的实现 三、ArrayList的简介 四、ArrayList的使用 1、ArrayList的构造 2、ArrayList常见操作 3、ArrayList的遍历 4、ArrayList的扩容机制 一、线性表 线性表 ( linear list ) 是n个具有相同特性的数据元素的…

目录

一、线性表

二、顺序表

1、接口的实现

三、ArrayList的简介

四、ArrayList的使用

1、ArrayList的构造

2、ArrayList常见操作

3、ArrayList的遍历

4、ArrayList的扩容机制


一、线性表

        线性表 ( linear list ) 是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列...

        线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。

二、顺序表

        顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。

1、接口的实现

public class SeqList {private int[] array;private int size;// 默认构造方法SeqList(){}// 将顺序表的底层容量设置为initcapacitySeqList(int initcapacity){}// 新增元素,默认在数组最后新增public void add(int data) {if(isFull()) {grow();}this.array[this.usedSize] = data;this.usedSize++;}private void grow() {this.array = Arrays.copyOf(this.array,2*this.array.length);}public boolean isFull() {return this.usedSize == array.length;}private void checkPos(int pos) throws PosIllegal{if(pos < 0 || pos > usedSize) {throw new PosIllegal("Pos位置不合法!!");}}// 在 pos 位置新增元素public void add(int pos, int data) {try {checkPos(pos);if(isFull()) {grow();}//挪动元素for(int i = usedSize-1;i >= pos; i--) {array[i+1] = array[i];}array[pos] = data;usedSize++;}catch (PosIllegal e) {System.out.println("插入元素pos位置不合法..");e.printStackTrace();}}// 判定是否包含某个元素public boolean contains(int toFind) {//array   usedSizefor (int i = 0; i < usedSize; i++) {if(array[i] == toFind) {return true;}}return false;}// 查找某个元素对应的位置//否则返回-1public int indexOf(int toFind) {for (int i = 0; i < usedSize; i++) {if(array[i] == toFind) {return i;}}return -1;}// 获取 pos 位置的元素//否则返回-1public int get(int pos) {try {checkEmpty();checkPos2(pos);return array[pos];}catch (PosIllegal e) {e.printStackTrace();}catch (EmptyException e) {e.printStackTrace();}return -1;}private void checkEmpty() {if(isEmpty()) {throw new EmptyException("顺序表为空!");}}public boolean isEmpty() {return usedSize == 0;}// 给 pos 位置的元素设为 valuepublic void set(int pos, int value) {try {checkEmpty();checkPos2(pos);array[pos] = value;}catch (PosIllegal e) {e.printStackTrace();}catch (EmptyException e) {e.printStackTrace();}}//删除第一次出现的关键字keypublic void remove(int toRemove) {try {checkEmpty();int pos = indexOf(toRemove);if(pos == -1) {return;}for (int i = pos; i < usedSize-1; i++) {array[i] = array[i+1];}usedSize--;}catch (EmptyException e) {e.printStackTrace();}}// 获取顺序表长度public int size() {return this.usedSize;}// 清空顺序表public void clear() {/* for (int i = 0; i < usedSize; i++) {array[i] = null;}*/usedSize = 0;}// 打印顺序表,注意:该方法并不是顺序表中的方法,为了方便看测试结果给出的public void display() {for (int i = 0; i < this.usedSize; i++) {System.out.print(array[i]+" ");}/*这里面所有都是 0for (int x : array) {System.out.print(x+" ");}*/}}

        要注意的是,数据结构看起来感觉很简单,但是逻辑非常的严谨,因此代码可能会较多!!!

三、ArrayList的简介

        在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:

(1)ArrayList是以泛型方式实现的,使用时必须要先实例化

(2)ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问

(3)ArrayList实现了Cloneable接口,表明ArrayList是可以clone的

(4)ArrayList实现了Serializable接口,表明ArrayList是支持序列化的

(5)和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector或者CopyOnWriteArrayList

(6)ArrayList底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表
 

四、ArrayList的使用

1、ArrayList的构造

public static void main(String[] args) {// ArrayList创建,推荐写法// 构造一个空的列表List<Integer> list1 = new ArrayList<>();// 构造一个具有10个容量的列表List<Integer> list2 = new ArrayList<>(10);list2.add(1);list2.add(2);list2.add(3);// list2.add("hello");  // 编译失败,List<Integer>已经限定了,list2中只能存储整形元素// list3构造好之后,与list中的元素一致ArrayList<Integer> list3 = new ArrayList<>(list2);// 避免省略类型,否则:任意类型的元素都可以存放,使用时将是一场灾难List list4 = new ArrayList();list4.add("111");list4.add(100);}

2、ArrayList常见操作

        ArrayList虽然提供的方法比较多,但是常用方法如下所示

 public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("JavaSE");list.add("JavaWeb");list.add("JavaEE");list.add("JVM");list.add("测试课程");System.out.println(list);// 获取list中有效元素个数System.out.println(list.size());// 获取和设置index位置上的元素,注意index必须介于[0, size)间System.out.println(list.get(1));list.set(1, "JavaWEB");System.out.println(list.get(1));// 在list的index位置插入指定元素,index及后续的元素统一往后搬移一个位置list.add(1, "Java数据结构");System.out.println(list);// 删除指定元素,找到了就删除,该元素之后的元素统一往前搬移一个位置list.remove("JVM");System.out.println(list);// 删除list中index位置上的元素,注意index不要超过list中有效元素个数,否则会抛出下标越界异常list.remove(list.size()-1);System.out.println(list);// 检测list中是否包含指定元素,包含返回true,否则返回falseif(list.contains("测试课程")){list.add("测试课程");}// 查找指定元素第一次出现的位置:indexOf从前往后找,lastIndexOf从后往前找list.add("JavaSE");System.out.println(list.indexOf("JavaSE"));System.out.println(list.lastIndexOf("JavaSE"));// 使用list中[0, 4)之间的元素构成一个新的SubList返回,但是和ArrayList共用一个elementData数组List<String> ret = list.subList(0, 4);System.out.println(ret);list.clear();System.out.println(list.size());}

3、ArrayList的遍历

        ArrayList 可以使用三种方式遍历:for循环+下标、foreach、使用迭代器

 public static void main(String[] args) {List<Integer> list = new ArrayList<>();list.add(1);list.add(2);list.add(3);list.add(4);list.add(5);// 使用下标+for遍历for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i) + " ");}System.out.println();// 借助foreach遍历for (Integer integer : list) {System.out.print(integer + " ");}System.out.println();//使用迭代器Iterator<Integer> it = list.listIterator();while(it.hasNext()){System.out.print(it.next() + " ");}System.out.println();}

#注:ArrayList最长使用的遍历方式是:for循环+下标 以及 foreach

        (迭代器是设计模式的一种,后序容器接触多了再给大家铺垫)

4、ArrayList的扩容机制

        请问:下面代码有缺陷吗?为什么?

 public static void main(String[] args) {List<Integer> list = new ArrayList<>();for (int i = 0; i < 100; i++) {list.add(i);}}

          由于内容较多,会分为多篇讲解,预知后续内容,请看后续博客!!!

http://www.dtcms.com/a/476615.html

相关文章:

  • 专门做家教的网站上海文化传媒有限公司
  • jsp商业网站开发英文网站建站山东
  • 烟台建站模板源码福州学做网站
  • 北湖区网站建设公司做兼职哪个网站比较好
  • 微信网站建设电话小白学编程应该从哪里开始学
  • 网站建设平台协议书江西省城乡建设培训中心网站
  • 个人建 行业 网站网络营销专业是干嘛的
  • 金富通青岛建设工程有限公司网站创造网站需要什么条件
  • c 网站开发视频教程北京朝阳区一小区现疑似病例
  • 网站信息内容建设实施办法网站改版如何做301
  • 珠海的门户网站有哪些中国建筑业未来发展展望
  • 企业网站app制作价格wordpress网站地图自动更新
  • 大坪网站公司如何自己创建一个网页
  • 餐饮网站建设的目的在线做网站午夜伦理
  • 郑州市精神文明建设 网站俱乐部logo免费设计在线生成
  • 什么叫seowordpress标签链接优化
  • 建设动漫网站的目的投资网站开发
  • 苏州网站建设外包wordpress 不显示分页
  • 内蒙古住房与建设厅网站网站建设用什么写
  • 南宁网站建设优化四川省住房建设厅网站打不开
  • 个人网站的设计与实现摘要m3型虚拟主机 wordpress
  • 重庆网站设计开发培训led网站建设哪家专业
  • 汕头手机建站模板宿迁市住房和城乡建设局网站
  • 成都网站建设前十WordPress里面自定义功能
  • 手机营销网站网站设计的企业
  • 北京市建设工程信息网交易网站手机网站开发工具 2018
  • 深圳网站开发报价公司注销流程及需要的材料
  • 建设银行大连市分行网站网站建设公司浙江华企
  • 旅游网页设计页面模板深圳seo搜索优化
  • h5网站开发实例教程wordpress 首页显示全文