您的位置:首页 > 教育 > 培训 > 大连模板做网站_郑州房产网官网_企业管理培训课程网课免费_俄罗斯搜索引擎

大连模板做网站_郑州房产网官网_企业管理培训课程网课免费_俄罗斯搜索引擎

2024/12/29 7:48:56 来源:https://blog.csdn.net/lxsxjsj/article/details/144702828  浏览:    关键词:大连模板做网站_郑州房产网官网_企业管理培训课程网课免费_俄罗斯搜索引擎
大连模板做网站_郑州房产网官网_企业管理培训课程网课免费_俄罗斯搜索引擎

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

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

2.顺序表

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

2.1接口的实现

public class SeqList {private int[] array;private int size;//默认构造方法public SeqList(){}//把顺序表的底层容量设为initcapacitySeqList(int initcapacity){}//新增加元素,默认在数组最后新增元素public void add(int data){}//在指定位置(pos) 位置新增元素public void add(int pos,int data){}//判断是否包含某个元素,如果包含这个元素就返回true,否则就返回falsepublic boolean contains(int toFind){return true;}//查找某个元素对应的位置,如果找到对应元素,就返回其元素的下标,如果没有找到元素,就返回-1;public int indexOf(int toFind){return -1;}//获取pos的位置的元素public int get(int pos){return -1;}//给pos的位置的元素设为 valuepublic void set(int pos,int value){}//删除第一次出现的关键字keypublic void remove(int toRemove){}//获取顺序表的长度public int size(){return 0;}//清空顺序表public void clear(){}//打印顺序表public void display(){}
}

ArrayList简介

在集合框架中,ArrayList是一个普通的类,实现了List接口

说明:

ArrayList是以泛型方式实现的,使用的时候必须先实例化.

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

ArraList实现了Cloneable接口,表明ArrayList是可以clone的

ArrayList实现了Serialiable接口,表明ArrayList是支持序列化的

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

4.ArrayList的使用

4.1ArrayList的构造

import java.util.ArrayList;
import java.util.List;public class Main {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");//如果我们要输入类似 list2.add("hello")这样的类型的内容,是不允许的.//我们在前面已经限定了泛型的类型是 Integer,类型不匹配就会报错.//我们可以通过创建 String 类型的 ArrayList 来存储 String 类型的数据List<String> list3 = new ArrayList<>();list3.add("hello");list3.add("world");//打印输出的内容是以数组的形式打印出来的System.out.println(list2);//我们在创建泛型的时候应该去避免出现,不指定存放元素类型这样的写法.//这样会导致顺序表中存放的内容的数据类型不明确,容易出现错误}
}

4.2ArrayList常见的操作方法

import java.util.ArrayList;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;public class Main2 {public static void main(String[] args) {//创建了一个存放 String 类型的 ArrayListList<String> list = new ArrayList<String>();//我们向 ArrayList 中添加元素list.add("JavaSE");list.add("JavaWeb");list.add("JavaEE");list.add("JVM");list.add("测试");//先打印一下 ArrayList 查看一下里面的元素System.out.println(list);//我们下面使用不同的方法//获取 list 中的有效元素的个数System.out.println(list.size());//获取和设置 index 位置上的元素,注意的是 index 必须要介于[0,size)之间//简单的获取的 index 位置上的元素System.out.println(list.get(1));//我们可以加上一些判断,来确保发生数组越界的情况发生//通过try{} 来抛出异常
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入要获取的 index 位置:");
//        int index = scanner.nextInt();
//        try{
//            if(index < 0 || index > list.size() - 1){
//                //通过 throw 来抛出异常
//                throw new InputMismatchException();
//            }
//            System.out.println(list.get(index));
//        }//通过 catch{}来捕获异常并处理异常
//        catch (InputMismatchException e){
//            System.out.println("输入的 index 位置,发生数组越界的情况发生");
//        }//我们通过 set() 方法来修改 index 位置上的元素list.set(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 = new list.subList(0,4);//清空数组list.clear();System.out.println(list);System.out.println(list.size());}
}

4.3ArrayList的遍历

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

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

注意的是:

ArrayList最常用的遍历的方式是:for循环+下标 以及foreach

2.迭代器是设计模式的一种方式,在后面才会使用

4.4ArrayList的扩容机制

ArrayList是一个动态类型的顺序表,即:在插入元素的过程中会自动扩容 

 

版权声明:

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

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