1.List的介绍在集合框架中List是一个集合继承于ConnectionConnection中所包含的方法有Connection继承于Interable接口List 的官方文档站在数据结构的角度来看List就是一个线性表即n个具有相同类型元素的有限序列在该序列上可以执行增删改查以及变量等操作。2.常见的方法List中的方法含有很多其中的方法很多但是常用的方法如下3.List的使用注意List是个接口不能被直接的实例化即以下的操作是不对的List接口实例化的必须是类所以我们可以使用List接口去实例化调用List接口的类例如ArrayListLinkedList。二.线性表线性表linear list是 n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构常见的线性表顺序表、链表、栈、队列 …线性表在逻辑上是线性结构也就说是连续的一条直线。但是在物理结构上并不一定是连续的线性表在物理上存储时通常以数组和链式结构的形式存储。三.顺序表顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构一般情况下采用数组存储。在数组上完成数据的增删查改。publicclassList{privateint[]array;privateintsize;privatestaticfinalintDEFAULT_CAPACITY10;// 默认构造方法publicList(){// 创建默认容量的数组arraynewint[DEFAULT_CAPACITY];// 初始化元素个数为0size0;}//判断顺序表是否为满如果满则true 否则 falsepublicbooleanisFull(){returnarray.lengthsize;}//将顺序表中的数组长度扩大为原来的2倍publicvoidgrow(){this.arrayArrays.copyOf(this.array,2*array.length);}// 新增元素,默认在数组最后新增publicvoidadd(intdata){if(isFull()){grow();}array[this.size]data;size;}// 在 pos位置新增元素publicvoidadd(intpos,intdata){try{checkPos(pos);}catch(PosIllegale){System.out.println(pos 的位置不合法);e.printStackTrace();}if(isFull()){grow();}for(intisize;ipos;i--){array[i]array[i-1];}array[pos]data;size;}//判断添加的pos位置是否合法privatevoidcheckPos(intpos)throwsPosIllegal{if(pos0||possize){thrownewPosIllegal(pos位置不合法);}}// 判定是否包含某个元素publicbooleancontains(inttoFind){for(inti0;isize;i){if(array[i]toFind){returntrue;}}returnfalse;}// 查找某个元素对应的位置publicintindexOf(inttoFind){for(inti0;isize;i){if(array[i]toFind){returni;}}return-1;}// 获取 pos位置的元素publicintget(intpos){if(pos0||possize){return-1;}returnarray[pos];}// 给 pos位置的元素设为 valuepublicvoidset(intpos,intvalue){try{checkPos(pos);array[pos]value;}catch(PosIllegale){System.out.println(pos位置不合法);e.printStackTrace();}}//删除第一次出现的关键字keypublicvoidremove(inttoRemove){if(indexOf(toRemove)-1){return;}intaindexOf(toRemove);for(intia;isize-1;i){array[i]array[i1];}size--;}// 获取顺序表长度publicintsize(){returnsize;}// 清空顺序表publicvoidclear(){}// 打印顺序表注意该方法并不是顺序表中的方法为了方便看测试结果给出的publicvoiddisplay(){for(inti0;isize;i){System.out.print(array[i] );}}}四、ArrayList的简介在集合框架中ArrayList是一个普通的类实现了List接口具体框架图如下1ArrayList是以泛型方式实现的使用时必须要先实例化2ArrayList实现了RandomAccess接口表明ArrayList支持随机访问3ArrayList实现了Cloneable接口表明ArrayList是可以clone的4ArrayList实现了Serializable接口表明ArrayList是支持序列化的5和Vector不同ArrayList不是线程安全的在单线程下可以使用在多线程中可以选择Vector或者CopyOnWriteArrayList6ArrayList底层是一段连续的空间并且可以动态扩容是一个动态类型的顺序表1.ArrayList的使用ArrayList 的构造publicstaticvoidmain(String[]args){//第一种无参数的构造方法Listlist1newArrayList();//第二种带容量参数的构造方法Listlist2newArrayList(10);list2.add(10);list2.add(20);list2.add(30);//注此处没有指代具体哪种类型的话默认为Object因此hello也可以存放list2.add(hello);//第三种将其他集合当做参数存放Listlist3newArrayList(list2);//此时list3中含有list2中的全部元素}ArrayList 的常见操作ArrayList 中的方法有很多但是常用的方法有以下几种publicstaticvoidmain(String[]args){ListlistnewArrayList();list.add(javase);list.add(javaee);list.add(JVM);list.add(java测开);System.out.println(list);System.out.println(list.get(1));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数组ListStringretlist.subList(0,4);System.out.println(ret);list.clear();System.out.println(list.size());}ArrayList的遍历ArrayList的遍历有已下几种遍历方法for循环下标foreach使用迭代器publicstaticvoidmain(String[]args){ListIntegerlistnewArrayList();list.add(10);list.add(20);list.add(30);list.add(40);list.add(50);for(inti0;ilist.size();i){System.out.println(list.get(i) );}for(Integerinteger:list){System.out.println(integer );}//使用迭代器IteratorIntegeritlist.listIterator();while(it.hasNext()){System.out.print(it.next() );}System.out.println();}ArrayList 的相关练习1.洗牌算法一副新牌四种花色♥♦♠♣数值分别为1–13经过一系列的洗牌之后分别发给三个人每人5张轮流抓牌最后展示剩余牌和三人手里的牌publicclassCard{privateStringsuit;//花色privateintrank;//牌面值publicCard(Stringsuit,intrank){this.suitsuit;this.rankrank;}OverridepublicStringtoString(){/*return Card{ suit suit \ , rank rank };*/returnString.format([%s %d],suit,rank);}}publicclassCardDemo{publicstaticfinalString[]suits{♥,♠,♣,♦};//买来一副新牌publicListCardbuyCard(){ListCardcardListnewArrayList(52);for(inti1;i13;i){for(intj0;j4;j){intranki;Stringsuitsuits[j];CardcardnewCard(suit,rank);cardList.add(card);}}returncardList;}//洗牌publicvoidshuffle(ListCardcardList){RandomrandomnewRandom();for(inticardList.size()-1;i0;i--){intindexrandom.nextInt(i);swap(cardList,i,index);}}privatevoidswap(ListCardcardList,inti,intj){/* Card tmp cardList[i]; cardList[i] cardList[j]; cardList[j] tmp; */CardtmpcardList.get(i);cardList.set(i,cardList.get(j));cardList.set(j,tmp);}//分别发牌publicListListCardplay(ListCardcardList){ListCardhand0newArrayList();ListCardhand1newArrayList();ListCardhand2newArrayList();ListListCardhandnewArrayList();hand.add(hand0);hand.add(hand1);hand.add(hand2);for(inti0;i5;i){for(intj0;j3;j){CardcardcardList.remove(0);//怎么把对应的牌 放到对应的人的手里面hand.get(j).add(card);}}returnhand;}}publicclassTest{publicstaticvoidmain(String[]args){CardDemocardDemonewCardDemo();//1. 买52张牌ListCardcardListcardDemo.buyCard();System.out.println(刚买回来的牌);System.out.println(cardList);//2. 洗牌cardDemo.shuffle(cardList);System.out.println(洗过的牌:);System.out.println(cardList);//3. 3个人每个人轮流发牌5张ListListCardretcardDemo.play(cardList);for(inti0;iret.size();i){System.out.println(第(i1)个牌ret.get(i));}System.out.println(剩下的牌);System.out.println(cardList);}2.杨辉三角杨辉三角classSolution{publicListListIntegergenerate(intnumRows){ListListIntegerretnewArrayList();ListIntegerlist1newArrayList();list1.add(1);//添加了第一行的数组ret.add(list1);//处理剩下行的数组for(inti1;inumRows;i){//开头元素ListIntegerlist2newArrayList();list2.add(1);//中间ListIntegerprelistret.get(i-1);for(intj1;ji;j){intval1prelist.get(j);intval2prelist.get(j-1);list2.add(val1val2);}//结尾list2.add(1);ret.add(list2);}returnret;}}
企业数字化 ERP 产品动态
相关推荐
【芳芯科技】16x64 LED点阵屏显示温湿度报警 实物效果图:实现功能:
1.DHT11温度度传感器实时采集温度和湿度的数值,通过1664 LED电子屏显示出来。
2.当温度超过25摄氏度或者湿度超过80%,1664 LED电子屏开始循环显示先关提示内容。原理图:程序源码:资料… · 2026/11/15 12:52:37
【芳芯科技】机智云行人检测节能路灯 实物效果图:实现功能:1.红外热释电检测行人2.检测环境光亮度3.有一个可充能的电池和一个小示意灯,检测电池充能状态,正常充能示意灯亮,反之灯灭4.可以通过wifi模块连接手机云平台,云平台可以查看灯运行状态… · 2026/11/15 12:52:24
【芳芯科技】睡眠质量检测系统 实物效果图:实现功能:1.睡眠心率实时监测,通过显示屏进行显示;2.呼吸频率实时监测,通过显示屏进行显示;3.体动次数实时监测,通过显示屏进行显示;4. 体温实时监测,通过显示… · 2026/11/13 13:53:40
漯河电工证拿证保姆级教程:实操考试心里没底怕挂科?手把手教你拿证不慌 漯河电工证拿证保姆级教程:实操考试心里没底怕挂科?手把手教你拿证不慌 实操考试心里没底怕挂科?特别是像你这样在信阳从事中小型施工企业的负责人,每天忙于项目管理、人员调配、安全合规,一听说要考电工证,脑袋就开始发懵——“这证到底难不难考?有没… · 2026/11/15 19:16:56
电工证与上岗证多少钱?怕考不过白交培训费?别慌! 电工证与上岗证多少钱?怕考不过白交培训费?别慌! 你是不是也担心电工证和上岗证考试考不过,钱白交了?其实大多数培训机构都有退费政策,只要你符合条件, 多少钱… · 2026/11/15 19:16:56
电工证年审考试题目千万别踩坑怎么选靠谱培训机构 电工证年审考试题目千万别踩坑怎么选靠谱培训机构 你是不是还在为电工证年审考试题目发愁?担心自己找错了地方,被中间人坑了钱还学不到东西?别急,今天就来聊聊怎么选对机构,避开那些 千万别踩坑 的陷阱。 为什么要考电工证年审考试?… · 2026/11/15 19:16:56
同城特种工培训多少钱?含金量高的证怎么选? 同城特种工培训多少钱?含金量高的证怎么选? 你手头正缺证?着急上岗找工作?特种作业证在当下工地、工厂、电力、建筑等行业是硬门槛,没有证连面试机会都没有。别急,今天咱们就聊聊【同城特种工培训多少钱】这个最关心的问题,顺便说说哪个证的 含金量… · 2026/11/15 19:16:56
观山湖区电工证办理怕被坑?考前押题帮你避开这些坑 观山湖区电工证办理怕被坑?考前押题帮你避开这些坑 不知道去哪报名怕被中介坑,现在办电工证的人越来越多,但找错地方真的容易被坑。观山湖区电工证办理虽然看起来简单,但其中门道不少,尤其对于初次报考的小伙伴来说,选对报名渠道、了解清楚考试内容、掌… · 2026/11/15 19:15:53
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
长春初级电工证怎么考?通过率揭秘全在这里 长春初级电工证怎么考?通过率揭秘全在这里 之前考的证在外省能不能转过来?这几乎是每个想从事电工工作的人都会问的问题。特别是那些在外地打拼多年、手里握着一张“外地电工证”的人,到了长春想继续干这一行,第一反应就是“我的证能用吗?”。今天我们就… · 2026/11/15 0:00:50
国内电工证报考条件与考试时间 低压电工证怎么考?学历不高也能报名,官方报名入口全在这 你是不是经常听说“电工证是入行门槛”,但又担心自己学历不够、经验不足,根本报不了名?别急,今天就带你从零了解【国内电工证】的报考流程、考试内容,还有怎么在 官方报名入口… · 2026/11/15 0:00:50
电工作业时如何断电?电子证书到底能不能全国通用? 电工作业时如何断电?电子证书到底能不能全国通用? 实操考试心里没底怕挂科,特别是电工作业时如何断电这一操作,不仅关系到你能不能拿到证书,更关系到以后能不能顺利上岗。很多人觉得这不过就是“断个电”,但其实这里面的门道可不少,稍有不慎就可能出错… · 2026/11/15 0:00:50
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 1:51:20
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 4:02:19
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/15 3:02:05