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

营销网站建设案例公司域名一年多少费用

营销网站建设案例,公司域名一年多少费用,做网站的费用如何入帐,淮北房产网文章目录 前言1.ArrayList的简介2. ArrayList使用2.1.ArrayList的构造2.2.ArrayList的扩容机制(JDK17) 3.ArrayList的常见操作4. ArrayList的具体使用4.1.[杨辉三角](https://leetcode.cn/problems/pascals-triangle/description/)4.2.简单的洗牌游戏 5.ArrayList的问题及思考 …

文章目录

  • 前言
  • 1.ArrayList的简介
  • 2. ArrayList使用
    • 2.1.ArrayList的构造
    • 2.2.ArrayList的扩容机制(JDK17)
  • 3.ArrayList的常见操作
  • 4. ArrayList的具体使用
    • 4.1.[杨辉三角](https://leetcode.cn/problems/pascals-triangle/description/)
    • 4.2.简单的洗牌游戏
  • 5.ArrayList的问题及思考


前言

上一篇我们模拟实现了ArrayList的部分功能,现在我们讨论如何使用Java中自带的ArrayList方法。


1.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底层是一段连续的空间,并且可以动态扩容,是一个动态类型的顺序表

2. ArrayList使用

2.1.ArrayList的构造

在这里插入图片描述
首先我们看一下这三个构造方法有什么区别在这里插入图片描述
在这里插入图片描述

上面有个疑问,等会再解答。

2.2.ArrayList的扩容机制(JDK17)

为了解决这个问题,我们看一下add的源码,这样就可以明白扩容机制。
在这里插入图片描述

在这里插入图片描述
我们把上面的问题解决了,现在考虑扩容机制(即当数组满的时候,那么或扩充多少空间)
在这里插入图片描述
通过上述的分析,我们发现Java内部ArrayList扩容机制是扩充1.5倍
总结】

  1. 检测是否真正需要扩容,如果是调用grow准备扩容
  2. 预估需要库容的大小
    初步预估按照1.5倍大小扩容
    如果用户所需大小超过预估1.5倍大小,则按照用户所需大小扩容
    真正扩容之前检测是否能扩容成功,防止太大导致扩容失败
  3. 使用copyOf进行扩容

3.ArrayList的常见操作

在这里插入图片描述
上面的方法主要讲最后一个

public static void main(String[] args) {ArrayList<Integer>list=new ArrayList<>();//add尾插list.add(1);list.add(2);list.add(3);//在指定位置插入list.add(2,4);for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i)+" ");}System.out.println();//subListList<Integer>list1=new ArrayList<>();list1=list.subList(2,4);for (int i=0;i<list1.size();i++){System.out.print(list1.get(i)+" ");}System.out.println();list.set(2,99);for (int i = 0; i < list.size(); i++) {System.out.print(list.get(i)+" ");}System.out.println();for (int i=0;i<list1.size();i++){System.out.print(list1.get(i)+" ");}}

我们看一下结果:
在这里插入图片描述
这是为什么呢,我们调试一下
在这里插入图片描述
我们会发现,两个数组所指向的内存是一样的,因此使用set()方法,改的时候,两个数组对应的值都会发生变化。


4. ArrayList的具体使用

4.1.杨辉三角

在这里插入图片描述
这个题吗,如果使用数组的话,很好做,但是
在这里插入图片描述
必须要使用顺序表,并且List<List< Integer >>什么意思?
如果联想一下二维数组,不难知道,这是一个二维顺序表。

public List<List<Integer>> generate(int numRows) {List<List<Integer>>list=new ArrayList<>();//先把第一行填满List<Integer>list0=new ArrayList<>();list0.add(1);list.add(list0);//再把剩余的填满for (int i=1;i<numRows;i++){List<Integer>curRow=new ArrayList<>();//第一个curRow.add(1);//中间List<Integer>preRow=list.get(i-1);for (int j = 1; j < i; j++) {int val1=preRow.get(j);int val2=preRow.get(j-1);curRow.add(val2+val1);}//最后一个curRow.add(1);list.add(curRow);}return list;}

4.2.简单的洗牌游戏

一副拍克牌,除去大小王,三个人完,洗完牌后,三个人轮流拿一张牌,拿五轮,写出算法。
Card类

public class Card {public int rank;   //牌面值public String suit;//花色public Card(int rank, String suit) {this.rank = rank;this.suit = suit;}@Overridepublic String toString() {return '['+suit+" "+rank+']';}
}

CardDemo类

public class CardDemo {public static final String[]suits={"♣","♦","♥","♠"};public List<Card> buyCard(){List<Card>cards=new ArrayList<>(52);for (int i=0;i<4;i++){for (int j=1;j<=13;j++){int rank=j;String suit=suits[i];Card card=new Card(rank,suit);cards.add(card);}}return cards;}private void Swap(List<Card>cards,int i,int j){Card tmp=cards.get(i);cards.set(i,cards.get(j));cards.set(j,tmp);}//洗牌public void shuttle(List<Card>cards){Random random=new Random();for (int i = cards.size()-1; i >0 ; i--) {int index=random.nextInt(i);Swap(cards,i,index);}}//发牌public List<List<Card>> play(List<Card>cards){List<List<Card>>hand=new ArrayList<>(3);List<Card>hand1=new ArrayList<>();List<Card>hand2=new ArrayList<>();List<Card>hand3=new ArrayList<>();hand.add(hand1);hand.add(hand2);hand.add(hand3);for (int i=0;i<5;i++){for (int j=0;j<3;j++){Card card=cards.remove(0);hand.get(j).add(card);}}return hand;}
}

5.ArrayList的问题及思考

  1. ArrayList底层使用连续的空间,任意位置插入或删除元素时,需要将该位置后序元素整体往前或者往后搬
    移,故时间复杂度为O(N)
  2. 增容需要申请新空间,拷贝数据,释放旧空间。会有不小的消耗。
  3. 增容一般是呈2倍的增长,势必会有一定的空间浪费。例如当前容量为100,满了以后增容到200,我们再继
    续插入了5个数据,后面没有数据插入了,那么就浪费了95个数据空间。
    思考: 如何解决以上问题呢?
http://www.yayakq.cn/news/343326/

相关文章:

  • html网站标题怎么做的显示危险网站怎么解决
  • 免费流程图制作网站黄聪 wordpress
  • 国外做耳机贸易的平台网站宝应人才网
  • 怎么做物物交换网站校际凡科平台怎么登录
  • 网站开发语言分类工程建设管理网站
  • 广安网站制作设计迅雷下载宝 做网站
  • 广东哪家网站建设哪家公司好接兼职建设网站
  • 哪些网站做农产品电子商务广州seo优化费用
  • 站内免费推广wapcms建站系统
  • 可以在线编程的网站焦作建设厅网站
  • 搜索引擎推广的优势淄博seo网站排名优化
  • 自己制作免费网站wordpress 首页 未登录
  • 石家庄网站设计公司怎么卸载2345网址导航
  • 北京的电商平台网站如何在工商局网站上做网登
  • 江阴外贸网站制作珍爱网
  • 重庆网站建设合肥公司宁波手机网站开发公司
  • 允许个人做动漫网站吗WordPress类似论坛主题
  • 江苏省城乡与建设厅网站首页wordpress文章太多
  • 开个捕鱼网站怎么做哈尔滨招投标信息网
  • 淄博网站仿网站工具
  • 商城网站怎么做内链如何制作网页代码
  • 安徽建设局网站怎么查证件信息纪检部门网站举报建设
  • 南昌市,做网站的公司广告公司策划
  • 如何建个人摄影网站广告设计网上接单
  • 网站数据库设置权限wordpress只能显示字
  • 火车头wordpress建站群汽车类网站建设预算
  • 有什么平台可以做网站阿胶在那种网站做推广好
  • 网站建设首先某网站开发项目成本估计
  • 司法局网站建设自定义wordpress标题的分隔符
  • 免费的网站如何建设西安百度seo代理