`
yaodaqing
  • 浏览: 349555 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

byte数组自动扩容

阅读更多
package com.digican.ztest;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;

/**
 * 数组自动扩容;在实际的socket通讯中经常会用到数组自动增加
 * @author yaodaqing
 *
 */
public class TestByte {

	private static final int BUFFER_SIZE = 512;
	
	public static void main(String[] args) {
		try {
			DataInputStream dis = new DataInputStream(new FileInputStream(new File("d:/abc.txt")));
			byte[] b = new byte[BUFFER_SIZE];
			int i = 0;
			int t = 0;
			while((i = dis.read()) != -1){
				//开始:数组自动扩容
				if(t==b.length){
					byte[] temp = new byte[t+1];
					System.arraycopy(b, 0, temp, 0, b.length);
					b = temp;
					temp = null;
				}
				b[t] = (byte)i;
				t++;
				//结束
				
				//此处是处理b的程序。。。
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

分享到:
评论

相关推荐

    leetcode算法题主函数如何写-Data-Structure:数据结构系统学习和实现

    自动扩容 在添加元素时判断是空间已填满 若填满则按照原由的data.length()的两倍进行扩容 扩容原理: 生成新的data数组 将原由的data数组赋值到新的的扩容数组中(遍历赋值存在效率问题) data引用新的数组 原由的数组...

    java基本知识整理

    - **数组扩容**:利用`Arrays.copyOf()`方法实现数组的扩容,只需要设置`newLength`大于源数组的长度即可。 - **数组的数据类型** - 基本类型(byte, short, int, long, double, float, char, boolean) - 引用...

    java笔记,持续更新

    **集合扩容原理**通常与ArrayList和LinkedList等实现有关,它们会在容量不足时自动增加容量,这涉及到元素的复制和新容量的计算。 **哈希表(HashMap)**是一种基于哈希函数的数据结构,提供了快速的插入、查找和...

    集合框架2021-07-02.docx

    例如,初始容量为10,第一次扩容后变为15,第二次扩容后变为22,以此类推。 在Java中,异常处理是必不可少的一部分。例如,`NoSuchFieldException`表示尝试访问的字段不存在,`NullPointerException`表示空指针引用...

    阿里巴巴电话面试题目——Java

    当内部数组容量不足时,会自动扩容。扩容策略通常是将容量翻倍。 2. **JVM 启动参数**:-verbose、-Xms、-Xmx 是常见的JVM参数。-verbose 输出JVM启动和运行时的详细信息;-Xms设置初始堆大小,-Xmx设置最大堆大小...

    ppy资源分析

    而集合框架中的ArrayList、LinkedList、HashSet和HashMap等类,提供了动态扩容、迭代、查找和删除等特性,极大地提高了代码的可读性和灵活性。 在PPT中,我们将详细展示每种数据类型的用法,通过实例解释转换规则,...

    滴滴出行&大疆安卓开发实习终面准备材料(详细版).docx

    - Map(如HashMap):默认容量16,超过阀值(容量*负载因子)时按2倍扩容。 12. **错误与异常**: - 错误:Java运行时系统内部错误,如OutofMemoryError。 - 异常:程序运行时可预见的问题,如...

    java面向对象编程知识点笔记整理与总结0

    - 数组扩容:`ary = Arrays.copyOf(ary, ary.length + 1);` #### 面向对象的三大原则 - **封装**:隐藏对象的属性和实现细节,仅对外提供公共访问方式。 - **继承**:子类继承父类的属性和方法,并可以扩展或覆盖...

    降低Java垃圾回收开销的5条建议.docx

    当集合中的元素数量超过数组的初始容量时,集合会自动扩容,即创建一个新的更大的数组,并将原有数组中的所有元素复制到新数组中,这一过程不仅消耗CPU资源,还会产生大量的临时对象,增加垃圾回收的压力。...

    Java基础-个人总结-超详细清楚-用于面试-针对无基础或有基础回忆.docx

    默认容量是16,负载因子0.75,当元素达到一定数量时会自动扩容。 - `TreeMap`基于红黑树,保证了插入、删除和查找的时间复杂度为O(logn),它按照键的自然排序或自定义比较器进行排序。 了解这些基础概念有助于理解...

    阿里巴巴java电话面试整理.doc

    当数组容量不足时,会自动扩容,通常每次扩容为原来的两倍。 2. **JVM启动参数**: - `-verbose`:开启JVM的详细输出,例如垃圾回收信息。 - `-Xms`:设置JVM初始堆内存大小,例如`-Xms1024m`表示初始堆内存为1GB...

    最新Java百度社招带答案面经.doc

    - **扩容过程**:扩容时会创建一个新的数组,所有旧数组的元素会被复制到新数组中。 - **并发特性**:ConcurrentHashMap通过分段锁或更细粒度的锁机制实现了更好的并发性能。 #### 10. LinkedList排序 - **推荐排序...

    2020大数据面试题总汇

    - **扩容机制**:当`HashMap`中元素数量超过数组长度*加载因子(默认0.75)时,就会进行扩容。扩容时将数组大小扩大为原来的两倍,并重新计算每个键值对应的哈希码,可能会导致部分元素需要重新分配位置。 ### ...

    面试题(2).docx

    - 扩容发生在元素数量达到初始容量的1.5倍(默认负载因子0.75),每次扩容容量翻倍。 10. **HashMap的键要求** - 作为HashMap键的类必须正确实现equals()和hashCode()方法,以确保键的唯一性和查找效率。 11. **...

    2021Java最新面试题库.doc

    HashMap的初始容量通常是16,且每次扩容时容量翻倍。 此外,还有其他类型的Map,如TreeMap使用红黑树实现,保证了元素的排序性;LinkedHashMap保持插入顺序或者访问顺序;WeakHashMap中的键使用弱引用,当键的对象...

    串口数据解析.docx

    推荐使用`List<byte>`作为缓存结构,因为它提供了动态扩容、易于添加和删除元素的功能,避免了手动管理数组可能带来的数据丢失风险。在接收数据过程中,我们需要监听串口的`DataReceived`事件,逐个接收字节并将其...

    Go语言面试八股文大全

    19. **GO 语言是如何实现切片扩容的?** 当切片需要更多空间时,Go 会创建一个新的更大的底层数组,并将原有数据复制过去。通常情况下,新数组的大小是原数组大小的两倍。这一过程是自动完成的,用户无需手动干预...

    java面试题 (用心收集)

    - 两者都是动态数组实现,但在扩容策略上不同,`ArrayList`增长约为原来的50%,`Vector`则为100%。 8. **HashMap与Hashtable的区别**: - `Hashtable`是基于早期的`Dictionary`类,而`HashMap`是`Map`接口的实现...

    java开发面试题及答案

    - Array是固定长度的,ArrayList长度可变,可自动扩容。 - Array只能存储同类型数据,ArrayList可存储不同类型的对象。 - ArrayList提供了丰富的操作方法,如添加、删除、查找等。 7. **&与&&的区别** - `&`既...

Global site tag (gtag.js) - Google Analytics