我就废话不多说了,大家还是直接看代码吧~

public static T[] dilatationArray(T[] datas,int newlen) {

//不能为负数

newlen = newlen<0?0:newlen;

//生成一个新数组,并copy原值到新数组

return Arrays.copyOf(datas, newlen);

}

package testpro;

import java.util.Arrays;

/**

* 数组扩容缩容

* 扩容之后扩容部分按照类型默认赋值为0,false或者null

* @author Administrator

*

*/

public class ArrayDilatation {

public static void main(String[] args) {

Student[] students = new Student[60];

for (int i=0;i

System.out.println(students[i]);

students[i] = new Student("Stu"+i,"Gen"+i,i);

System.out.println(students[i]);

}

System.out.println(students);

students = dilatationArray(students, 60);

for (Student student : students) {

System.out.println(student);

}

System.out.println(students);

}

public static T[] dilatationArray(T[] datas,int newlen) {

//不能为负数

newlen = newlen<0?0:newlen;

//生成一个新数组,并copy原值到新数组

return Arrays.copyOf(datas, newlen);

}

}

class Student{

private String name;

private String gender;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Student(String name, String gender, int age) {

super();

this.name = name;

this.gender = gender;

this.age = age;

}

@Override

public String toString() {

return "Student [name=" + name + ", gender=" + gender + ", age=" + age + "]";

}

}

补充:Java实现一个栈(通过自定义数组实现,可以自动扩容)

Java实现一个栈(可以自动扩容)

先声明接口interface Stack

/**

* @author yinglongwu

*/

//适用泛型

public interface Stack {

int getSize();

boolean isEmpty();

void push(E e);//入栈

E pop();//出栈

E peek();//查看栈顶元素

}

class ArrayStack实现接口

这里是通过自定义的Array类里的方法来实现Stack接口,进而形成这个ArrayStack类

自定义的Array类:点我跳转

/**

* @author yinglongwu

*/

//这里通过自定义的Array类里的方法实现Stack接口,进而形成这个ArrayStack,

//并且也可以自动扩容

public class ArrayStack implements Stack {

//这个Array是自己封装的

Array array;

//有参构造

public ArrayStack(int capacity) {

array = new Array<>(capacity);

}

//无参构造

public ArrayStack() {

array = new Array<>();//使用Array类里的无参构造

}

//获取栈的最大容量

public int getCapacity() {

return array.getCapacity();//调用的方法也是自己封装的Array类里的方法

}

//对接口中的方法进行重写

@Override

public int getSize() {

return array.getSize();

}

@Override

public boolean isEmpty() {

return array.isEmpty();

}

//入栈

@Override

public void push(E e) {

array.addLast(e);

}

//出栈

@Override

public E pop() {

return array.removeLast();

}

//查看栈顶元素

@Override

public E peek() {

return array.getLast();

}

//对toString方法进行重写,方便输出栈的基本信息

@Override

public String toString() {

StringBuilder res = new StringBuilder();

res.append("Stack: ");

res.append('[');

for (int i = 0; i < array.getSize(); i++) {

res.append(array.get(i));

if (i != array.getSize()-1) {

res.append(", ");

}

}

res.append("] top");//表明右侧是栈顶

return res.toString();

}

}

测试使用这个ArrayStack栈

/**

* @author yinglongwu

*/

public class Main {

public static void main(String[] args) {

//测试class ArrayStack

ArrayStack stack = new ArrayStack();//new ArrayStack()里的Integer可写可不写

//包装类和其对应的基本数据类型可以自动转换

//将0到4入栈

for (int i = 0; i < 5; i++) {

stack.push(i);

System.out.println(stack);

}

//出一次栈

stack.pop();

System.out.println(stack);

}

}

输出结果

以上为个人经验,希望能给大家一个参考,也希望大家多多支持聚米学院。如有错误或未考虑完全的地方,望不吝赐教。

数组扩容 java_java 实现数组扩容与缩容案例相关推荐

  1. Docker高级篇之Mysql主从复制、Redis集群扩容缩容配置案例详解

    Docker之Mysql主从复制.Redis集群扩容缩容配置案例 1. 安装mysql主从复制 1.1 新建主服务器容器实例3307 1.2 进入/mydata/mysql-master/conf目录 ...

  2. redis专题:redis集群的动态扩容缩容,水平扩展

    文章目录 1. 扩容背景介绍 2. redis集群扩容 2.1 增加redis实例 2.2 配置8007为master节点 2.3 配置8008为8007的从节点 3. redis集群缩容 3.1 先 ...

  3. java 数组的扩容,缩容,插入元素,查找元素 详解(通俗易懂)

    目录 前言 : 一个必须明白的事实(重要!) : 数组的扩容 : 需求 : 思路 : 代码演示 : 数组的缩容 : 需求 : 思路 : 代码演示 : 数组元素的插入 : 需求 : 思路 : 代码演示 ...

  4. arraylist扩容是创建新数组吗 java_Java编程之数组扩容

    一.背景 数组在实际的系统开发中用的越来越少了,我们只有在阅读某些开源项目时才会看到数组的使用.在Java中,数组与List.Set.Map等集合类相比,后者使用起来方便,但是在基本数据类型处理方面, ...

  5. 数组扩容 java_java 数组扩容的方法

    java 拓展数组长度的方法 前言 数组是我们编程常用到的一种最简单的数据结构,操作简单,功能强大. 但是也是一个缺点,就是一旦创建了数组,就不能改变它的大小.如果申请一个超大的内存空间,又容易造成空 ...

  6. arraylist扩容是创建新数组吗 java_Java 集合,你肯定也会被问到这些

    文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 作为一位小菜 "一面面试官",面试过程中,我肯定会问 Java 集合的内容,同时作为求职者,也肯定会 ...

  7. arraylist扩容是创建新数组吗 java_Java 基础数据结构分析

    java -version java version "13.0.2" 2020-01-14 Java(TM) SE Runtime Environment (build 13.0 ...

  8. java数组的扩容,将两个数组合并成一个数组

    java数组的扩容,将两个数组合并成一个数组 //将下列两个数组合成一个数组 public class Test04 {public static void main(String[] args) { ...

  9. Java源码HashMap、ConcurrentHashMap:JDK1.8HashMap静态常量以及设置的目的,初始容量、最大容量、扩容缩容树化条件

    HashMap核心源码 作为工作中最重要.最常用的容器之一,当然还是要自己动手写一篇 HashMap 的源码解析来加深对其的印象咯,而且它的设计与实现 也有很多值得学习的地方. 以下包含HashMap ...

最新文章

  1. Too Many Segments CF595D 贪心乱搞
  2. h5 解决ios端输入框失去焦点后页面不回弹或者底部留白问题
  3. Swift 开源精选-v1.0(进阶篇)
  4. [转载] 七龙珠第一部——第130话 悟空的敌人竟是悟空
  5. python column stack_Python基础 | pandas中dataframe的整合与形变(merge reshape)
  6. 正确使用cookie中的domain
  7. leetcode19. 删除链表的倒数第 N 个结点
  8. 【Android】Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能...
  9. linux相关系统下qtcreator调试程序
  10. 在Ubuntu 上怎么连接装有iOS 7的iPhone或iPad
  11. Theano2.1.11-基础知识之稀疏
  12. 双11首日全国共揽收快递包裹5.69亿件 同比增长28.54%
  13. 已潜伏17年!严重的“可蠕虫”系统漏洞影响所有Windows Server
  14. swfupload 无法加载_解决SWFUpload上传控件在非IE浏览器下不好用的问题
  15. centos7搭建bugzilla
  16. 中序线索化二叉树的遍历
  17. 你知道Linux和Windows通用的复制和粘贴快捷键是什么嘛?
  18. bitcoin中私钥、公钥、钱包地址之间的关系
  19. 关于汉庭连锁酒店加盟的4个优势
  20. linux下将8bit二值位图转化为1bit单色位图【C/C++】

热门文章

  1. Django 第三方引用富文本编辑器6.1
  2. python 在字典插入值和修改字典value值的方法
  3. 使用nexus来搭建Nuget私服
  4. meson 中调用shell script
  5. 重写浏览器alert解决ios端原生alert出现当前网址的URL
  6. POJ 2430 状压DP
  7. linux下发布的执行文件崩溃的问题定位 心得一则
  8. 需要反射时使用dynamic
  9. 用PHP生成等比图像的方法
  10. VScode配置ROS环境