Java手动释放对象

2023-11-01

伪代码

public void updateUser(BufferedWriter writer, BufferedReader reader) {
		List<User> array = new ArrayList<User>();
		User st = new User();

		String line;
		int count = 0;
		try {
			while ((line = reader.readLine()) != null) { // line 每次得到一行数据

				String[] str = line.split(","); // 将每行数据以逗号切片

				st.setId(str[0]);
				st.setName(str[1]);
				st.setAge(str[2]);
				st.setAddr(str[3]);
				st.setUpdate(str[4]);
				st.setUpdate_time(str[5]);

				count = 1;
				array.add(st);
			}
			...
			...

以上代码单词循环无任何问题,多次执行while时执行到 array.add(st);后会覆盖前面st中的值(因为第二次执行时st并没有被释放,前面st中添加的值还在),导致写入集合中的数据不正确。

修改后代码:

public void updateUser(BufferedWriter writer, BufferedReader reader) {
		List<User> array = new ArrayList<User>();
		User st = new User();

		String line;
		int count = 0;
		try {
			while ((line = reader.readLine()) != null) { // line 每次得到一行数据

				String[] str = line.split(","); // 将每行数据以逗号切片

				st.setId(str[0]);
				st.setName(str[1]);
				st.setAge(str[2]);
				st.setAddr(str[3]);
				st.setUpdate(str[4]);
				st.setUpdate_time(str[5]);

				count = 1;
				array.add(st);
				// 很重要,将st中的属性清空,不会覆盖前面的数据
				st = new User(); 
			}
			...
			...

重新赋值就会覆盖上一次的内容了,只能算是伪释放,也可以像下面这样写

public void updateUser(BufferedWriter writer, BufferedReader reader) {
		List<User> array = new ArrayList<User>();

		String line;
		int count = 0;
		try {
			while ((line = reader.readLine()) != null) { // line 每次得到一行数据
				User st = new User(); // 将对象创建在循环中每次循环也会覆盖上次内容
				String[] str = line.split(","); // 将每行数据以逗号切片

				st.setId(str[0]);
				st.setName(str[1]);
				st.setAge(str[2]);
				st.setAddr(str[3]);
				st.setUpdate(str[4]);
				st.setUpdate_time(str[5]);

				count = 1;
				array.add(st);
			}
			...
			...

转载于:https://www.cnblogs.com/weibgg/p/10786961.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java手动释放对象 的相关文章

随机推荐

  • centos7hadoop安装配置

    centos7 Hadoop安装配置 一 前置 1 新建虚拟机 先关闭防火墙 2 配置虚拟机网络 3 安装vim工具 4 设置免密登陆 5 安装同步时间工具 6 修改本计算机名字 二 安装配置JDK和Hadoop 1 通过xftp或者类似软
  • 三极管实现的锁存电路

    电路现象描述 电路上电后状态是万用表输出电压位1 874uV 电路复位输出低电平 当按键S2按下后 万用表测的电压为4 959V 高电平 按键S2松开后 万用表仍然保持输出4 918V 高电平 既实现了高电平的锁存 当按键S1按下后电路万用
  • 1/1 + 1/2 + 1/4 + 1/8 + 1/16 + .... 每项是前一项的一半,如果一共有20项,求这个和是多少,结果用分数表示出来。分子分母要求互质。

    转载 蓝桥杯真题 18省Ca1 分数 1 1 1 2 1 4 1 8 1 16 每项是前一项的一半 如果一共有20项 求这个和是多少 结果用分数表示出来 类似 3 2 伏城无嗔的博客 CSDN博客
  • 几个常用算法的适应场景及其优缺点(非常好)

    本文主要回顾下几个常用算法的适应场景及其优缺点 机器学习算法太多了 分类 回归 聚类 推荐 图像识别领域等等 要想找到一个合适算法真的不容易 所以在实际应用中 我们一般都是采用启发式学习方式来实验 通常最开始我们都会选择大家普遍认同的算法
  • 关于appcompat_v7的问题

    今天处理了一下之前遗留下来的一个问题 问题现象 1 路径 res values 下的styles xml文件显示下述错误 error Error retrieving parent for item No resource found th
  • spark 访问阿里云OSS

    pom xml
  • FreeNAS-11.2-U7 smb共享和FTP设置

    环境 最少2块硬盘 1块系统盘 1块存储盘 IP 10 0 1 101 24 下载 https download freenas org 11 2 STABLE U7 x64 FreeNAS 11 2 U7 iso 配置SMB共享 第一步
  • 月报总结|Moonbeam 8月份大事一览

    夏日已经趋近尾声 脚下的这片土地正迎来凉爽的秋天 Moonbeam在最炎热的8月中 依然朝着其愿景不断向前迈进 Moonbeam生态也迎来了许多好消息 先前启动的第二批生态Grant计划也完成了最后的链上投票 3个项目成功通过投票 将获得G
  • java 稀疏数组(结合IO流)

    package com test01 import java io 稀疏数组的应用 public class Run private static String path D data dat public static void main
  • PySpark与DataFrame简介

    PySpark与DataFrame简介 1 PySpark与DataFrame简介 1 1 Spark简介 1 2 Spark DataFrame生成 1 基于RDD使用toDF 2 读取本地文件 3 读取HIVE表 4 pandas Da
  • 线性布局中的layout_weight属性

    作者 华清远见讲师 layout weight属性是线性布局的特有属性 当需要去按比例分配某一行或某一列上的控件时 通常会想到使用权重这个属性去解决 一般在使用该属性时 要把控件的layout width或layout height设置成0
  • VMware创建虚拟机时出现 network bot from intel e1000

    准备在vmware 上 创建虚拟机 点击启动时 却出现 network bot from intel e1000 operating system not found 首先查看一下是否安装使用了iso镜像 查询步骤如图 选中使用即可 如果还
  • selenium测试框架快速搭建(ui自动化测试)

    一 介绍 selenium目前主流的web自动化测试框架 支持多种编程语言Java pythan go js等 selenium 提供一系列的api 供我们使用 因此在web测试时我们要点页面中的某一个按钮 那么我们只需要获取页面 然后根据
  • cmake:aux_source_directory

    理论 aux source directory 查找在某个路径下的所有源文件 aux source directory lt dir gt lt variable gt 搜集所有在指定路径 lt dir gt 下的源文件的文件名 将输出结果
  • 禅道的测试模块(编写用例)

    建用例 用测试人员1的账号登录
  • PCI配置空间访问机制 及 地址域转换过程

    访问配置空间的总线事务通过ID进行寻址 ID号由总线号 Bus 设备号 Device 功能号 Function 组成 总线号 HOST主桥遍历PCI总线时确定 PCI总线可以通过PCI桥来扩展 并形成PCI总线树 在PCI总线树上 有几片P
  • LinearGradient线性渲染

    java view plain copy import android content Context import android graphics Canvas import android graphics Color import
  • 深度学习Apex库的安装以及一些问题的解决

    深度学习Apex库的介绍 APEX是英伟达开源的 完美支持PyTorch框架 用于改变数据格式来减小模型显存占用的工具 其中最有价值的是amp Automatic Mixed Precision 将模型的大部分操作都用Float16数据类型
  • Java dom4j生成XML文件的方法分享

    转自 Java dom4j生成XML文件的方法分享 下文讲述使用dom4j生成XML文件的方法分享 如下所示 dom4j创建xml的方法分享 1 创建一个文档模型 Document document DocumentHelper creat
  • Java手动释放对象

    伪代码 public void updateUser BufferedWriter writer BufferedReader reader List