您的位置:首页 > 文旅 > 美景 > 音速企业名录搜索软件_网页版梦幻西游vip价格表_打开官方网站_seo关键词词库

音速企业名录搜索软件_网页版梦幻西游vip价格表_打开官方网站_seo关键词词库

2024/12/22 18:04:46 来源:https://blog.csdn.net/Lotus_zyz/article/details/142929063  浏览:    关键词:音速企业名录搜索软件_网页版梦幻西游vip价格表_打开官方网站_seo关键词词库
音速企业名录搜索软件_网页版梦幻西游vip价格表_打开官方网站_seo关键词词库

目录

  • 1.介绍
  • 2.顺序表实现
    • 2.1 代码简单实现顺序表
    • 2.2 List接口实现顺序表
  • 3.ArrayList常用方法
  • 4.ArrayList的遍历
    • 4.1 直接打印
    • 4.2 for循环或for-each
    • 4.3 迭代器

1.介绍

线性表(一种广泛使用的数据结构),是n个具有相同特征的数据元素的有限序列,在逻辑上线性表是线性结构(连续的一条直线),在物理结构上不一定连续,通常以数组和链式结构的形式存储。而顺序表就是线性表的一种,它是一段物理地址连续的存储单元依次存储数据元素的线性结构,一般采用数组来存储

2.顺序表实现

顺序表的实现可以通过自己写代码实现(主要为了理解顺序表,需要使用顺序表时不推荐使用自己实现的),或直接使用List接口来实现

2.1 代码简单实现顺序表

import java.util.Arrays;
public class MyArrayList {public int[] elem;public int usedSize;public static final int DEFAULT_SIZE= 10;public MyArrayList() {this.elem = new int[DEFAULT_SIZE];}public void display() { //打印顺序表System.out.println(Arrays.toString(elem));}public void add(int data) { //在数组最后新增元素(尾插)if(isFull()) {this.elem=Arrays.copyOf(elem,elem.length*2);}this.elem[usedSize]=data;this.usedSize++;}public boolean isFull() { //判断数组元素是否已满return this.usedSize==this.elem.length;}private boolean checkPosInAdd(int pos) { //判断新增元素时pos值是否合法if(pos<0||pos>usedSize) {return false;}return true;}public void add(int pos, int data) { //在pos位置新增元素if(!checkPosInAdd(pos)) {throw new PosException("pos的值不合法:"+pos);}if(isFull()) {this.elem=Arrays.copyOf(elem,elem.length*2);}for(int i=usedSize-1;i>=pos;i--) {this.elem[i+1]=this.elem[i];}this.elem[pos]=data;this.usedSize++;}public boolean contains(int toFind) { //判断是否包含某个元素for (int i = 0; i < usedSize; i++) {if (toFind == elem[i]) {return true;}}return false;}public int indexOf(int toFind) { //查找某个元素对应的位置for (int i = 0; i < usedSize; i++) {if (toFind == elem[i]) {return i;}}return -1;}public boolean checkPosInGetAndSet(int pos){ //判断设置元素和获取元素时pos值是否合法if(pos<0||pos>=usedSize) {return false;}return true;}public int get(int pos) { //获取pos位置的元素if(!checkPosInGetAndSet(pos)) {throw new PosException("pos值不合法:"+pos);}if(isEmpty()) {throw new EmptyException("顺序表为空");}return this.elem[pos];}private boolean isEmpty() { //判断数组是否没有元素return this.usedSize==0;}public void set(int pos, int value) { //给pos位置的元素设为valueif(!checkPosInGetAndSet(pos)) {throw new PosException("pos的值不合法");}if(isEmpty()) {throw new EmptyException("顺序表为空");}this.elem[pos]=value;}public void remove(int key) { //删除第一次出现的关键词keyif(isEmpty()) {throw new EmptyException("顺序表为空");}int index=indexOf(key);for(int i=index;i<usedSize-1;i++) {this.elem[i]=this.elem[i+1];}this.usedSize--;}public int size() { //获取顺序表长度return this.usedSize;}public void clear() { //清空顺序表usedSize=0;}
}

2.2 List接口实现顺序表

import java.util.ArrayList;
import java.util.List;
public class Main {public static void main(String[] args) {//ArrayList是一个普通的类,实现了List接口(以下两种实现方式都可以,根据创建的list的类型进行选择)ArrayList<Integer> list = new ArrayList<>();List<Integer> list1 = new ArrayList<>();}
}

3.ArrayList常用方法

方法解释
boolean add(E e)尾插e
void add(int index,E element)将e插入到index位置
boolean addAll(Collection<? extends E> c)尾插c中的元素
E remove(int index)删除index位置元素
boolean remove(Object o)删除遇到的第一个o
E get(int index)获取下标index位置元素
E set(int index,E element将下标index为止元素设置为element
void clear( )清空
boolean contains(Object o)判断o是否在线性表中
int indexOf(Object o)返回第一个o所在下标
int lastIndexOf(Object o)返回最后一个o的下标
List<E> subList(int fromIndex,int toIndex)截取部分list(截取的list仍指向原list)

4.ArrayList的遍历

4.1 直接打印

ArrayList类重写了toString方法,我们可以使用System.out.println( )直接打印顺序表

import java.util.ArrayList;
public class Main {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);System.out.println(list);}
}

4.2 for循环或for-each

ArrayList使用数组进行存储,我们可以使用for循环或for-each(两者基本相同)遍历顺序表

import java.util.ArrayList;
public class Main {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);for (int i = 0; i < list.size(); i++) { //for循环System.out.println(list.get(i));}for (int elem : list) { //for-eachSystem.out.println(elem);}}
}

4.3 迭代器

ArrayList实现了Iterable接口,我们可以创建迭代器对象来打印顺序表

import java.util.ArrayList;
import java.util.Iterator;
public class Main {public static void main(String[] args) {ArrayList<Integer> list = new ArrayList<>();list.add(1);list.add(2);Iterator<Integer> iterator = list.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com