数组扩容 java_java 实现数组扩容与缩容案例
我就废话不多说了,大家还是直接看代码吧~
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 实现数组扩容与缩容案例相关推荐
- Docker高级篇之Mysql主从复制、Redis集群扩容缩容配置案例详解
Docker之Mysql主从复制.Redis集群扩容缩容配置案例 1. 安装mysql主从复制 1.1 新建主服务器容器实例3307 1.2 进入/mydata/mysql-master/conf目录 ...
- redis专题:redis集群的动态扩容缩容,水平扩展
文章目录 1. 扩容背景介绍 2. redis集群扩容 2.1 增加redis实例 2.2 配置8007为master节点 2.3 配置8008为8007的从节点 3. redis集群缩容 3.1 先 ...
- java 数组的扩容,缩容,插入元素,查找元素 详解(通俗易懂)
目录 前言 : 一个必须明白的事实(重要!) : 数组的扩容 : 需求 : 思路 : 代码演示 : 数组的缩容 : 需求 : 思路 : 代码演示 : 数组元素的插入 : 需求 : 思路 : 代码演示 ...
- arraylist扩容是创建新数组吗 java_Java编程之数组扩容
一.背景 数组在实际的系统开发中用的越来越少了,我们只有在阅读某些开源项目时才会看到数组的使用.在Java中,数组与List.Set.Map等集合类相比,后者使用起来方便,但是在基本数据类型处理方面, ...
- 数组扩容 java_java 数组扩容的方法
java 拓展数组长度的方法 前言 数组是我们编程常用到的一种最简单的数据结构,操作简单,功能强大. 但是也是一个缺点,就是一旦创建了数组,就不能改变它的大小.如果申请一个超大的内存空间,又容易造成空 ...
- arraylist扩容是创建新数组吗 java_Java 集合,你肯定也会被问到这些
文章收录在 GitHub JavaKeeper ,N线互联网开发必备技能兵器谱 作为一位小菜 "一面面试官",面试过程中,我肯定会问 Java 集合的内容,同时作为求职者,也肯定会 ...
- arraylist扩容是创建新数组吗 java_Java 基础数据结构分析
java -version java version "13.0.2" 2020-01-14 Java(TM) SE Runtime Environment (build 13.0 ...
- java数组的扩容,将两个数组合并成一个数组
java数组的扩容,将两个数组合并成一个数组 //将下列两个数组合成一个数组 public class Test04 {public static void main(String[] args) { ...
- Java源码HashMap、ConcurrentHashMap:JDK1.8HashMap静态常量以及设置的目的,初始容量、最大容量、扩容缩容树化条件
HashMap核心源码 作为工作中最重要.最常用的容器之一,当然还是要自己动手写一篇 HashMap 的源码解析来加深对其的印象咯,而且它的设计与实现 也有很多值得学习的地方. 以下包含HashMap ...
最新文章
- Too Many Segments CF595D 贪心乱搞
- h5 解决ios端输入框失去焦点后页面不回弹或者底部留白问题
- Swift 开源精选-v1.0(进阶篇)
- [转载] 七龙珠第一部——第130话 悟空的敌人竟是悟空
- python column stack_Python基础 | pandas中dataframe的整合与形变(merge reshape)
- 正确使用cookie中的domain
- leetcode19. 删除链表的倒数第 N 个结点
- 【Android】Android开发启动app弹出一张广告图片,Dialog可以查看大图,查看某个图片功能...
- linux相关系统下qtcreator调试程序
- 在Ubuntu 上怎么连接装有iOS 7的iPhone或iPad
- Theano2.1.11-基础知识之稀疏
- 双11首日全国共揽收快递包裹5.69亿件 同比增长28.54%
- 已潜伏17年!严重的“可蠕虫”系统漏洞影响所有Windows Server
- swfupload 无法加载_解决SWFUpload上传控件在非IE浏览器下不好用的问题
- centos7搭建bugzilla
- 中序线索化二叉树的遍历
- 你知道Linux和Windows通用的复制和粘贴快捷键是什么嘛?
- bitcoin中私钥、公钥、钱包地址之间的关系
- 关于汉庭连锁酒店加盟的4个优势
- linux下将8bit二值位图转化为1bit单色位图【C/C++】