关于Android 中双list数据复制问题

这篇具有很好参考价值的文章主要介绍了关于Android 中双list数据复制问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、基本类型的数据 没有hashcode 直接add
2、包含bean数据类型的list 间相互复制
不管是addall 还是 add
如:
list1.add(list2.get(1));
如果数据类型包含bean, debug会发现数据其实指向是一样的
当list2中数据修改时,list1中的数据同样被修改
此时正确的做法应该是再写一个copy方法
Bean data = new Bean();
data.setName(list2.get(i).getName());
基础数据的复制可以正常set就行,如果是复制的数据类型,则需要继续new 子类

3、把数据写入内存中再读出来,下面时网上的方法,bean对象继承Serializable

package com.example.chanp.testannotation.util;
 
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
 
/**
 * Created by sjx on 2019/6/27.
 */
 
public class CloneObjectUtils {
 
    public static <T> T cloneObject(T obj) {
        T result = null;
        ByteArrayOutputStream byteArrayOutputStream = null;
        ByteArrayInputStream byteArrayInputStream = null;
        ObjectOutputStream outputStream = null;
        ObjectInputStream inputStream = null;
        try {
            //对象写到内存中
            byteArrayOutputStream = new ByteArrayOutputStream();
            outputStream = new ObjectOutputStream(byteArrayOutputStream);
            outputStream.writeObject(obj);
 
            //从内存中再读出来
            byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
            inputStream = new ObjectInputStream(byteArrayInputStream);
            result = (T) inputStream.readObject();
 
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (outputStream != null)
                    outputStream.close();
                if (inputStream != null)
                    inputStream.close();
                if (byteArrayOutputStream != null)
                    byteArrayOutputStream.close();
                if (byteArrayInputStream != null)
                    byteArrayInputStream.close();
 
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return result;
    }
}

调用:Bean bean = CloneObjectUtils.cloneObject(list1.get(0));
--------------------->>>>>>>>>>>>>>>>>
2023/08/28 by dpl文章来源地址https://www.toymoban.com/news/detail-687125.html

到了这里,关于关于Android 中双list数据复制问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于android studio 几个简单的问题说明

    自信是成功的第一步。——爱迪生 1. android studio 如何运行不同项目是否要更换不同的sdk 和 gradle    2.编译Gradle总是错误为什么  3.如何清理android studio 的缓存 4. 关于android Studio中的build 下面的rebuild project  

    2024年02月11日
    浏览(30)
  • 关于Android 11、12和13服务保活问题

    物联网环境,为了解决不同厂商、不同设备、不同网络情况下使用顺畅,同时也考虑到节约成本,缩小应用体积的好处,我们需要一个服务应用一直存在系统中,保活它以提供服务给其他客户端调用。 开机自启动,通过广播通信, 必要权限 开机自启动Service相关代码 注意

    2023年04月08日
    浏览(73)
  • Android问题笔记 - 关于腾讯文档TBS离线的研究

    专栏分享 点击跳转=Unity3D特效百例 点击跳转=案例项目实战源码 点击跳转=游戏脚本-辅助自动化 点击跳转=Android控件全解手册 点击跳转=Scratch编程案例 点击跳转=软考全系列 众所周知,人生是一个漫长的流程,不断 克服困难 ,不断反思前进的过程。在这个过程中会产生很多对

    2024年02月08日
    浏览(42)
  • 关于Android Studio 在XML中编码无代码提示的问题

    记录一下终于受不了在activity_main.xml中敲代码没有提示,全手敲到网上找解决办法,到终于顺利解决的过程!   有提示可太爽啦 ~~ 解决方法: 1. 我的Android Studio开始不懂装了好些版本的Sdk,然后全部卸载就装了API 32,可以选择一个版本或多个版本下载下来,然后关掉软件 重

    2024年02月07日
    浏览(38)
  • 出现Unable to access Android SDK add-on list的问题怎么解决?

    问题:第一次打开新下载好的Android Studio时出现以下错误提示框,显示Unable to access Android SDK add-on list 解决:打开文件安装位置,在目录中找到目录名为bin的文件夹,如图所示: 双击打开bin目录,找到idea.properties。有记事本打开,在最后一行添加 disable.android.first.run=true 保存即

    2024年02月17日
    浏览(37)
  • Android13关于获取外部存储文件的相关问题及解决方案记录

      Android的学习路上... 测试设备:vivo X90s 安卓版本: Android13 开发环境:AndroidStudio Flamingo SDK:33 最近我在Android13的环境下尝试写一个 文件选择器 ,以便日后的开发使用。但是我们知道,从Android13 (API33) 开始,外部存储权限发生了变化,要想读取外部存储文件,使用原来的权

    2024年01月15日
    浏览(40)
  • 解决 Android Studio 的 Gradle 面板上只有关于测试的 task 的问题

    笔者出问题时的运行环境: Android Studio Flamingo | 2022.2.1 Android SDK 33 Gradle 8.0.1 JDK 17   笔者最近发现一个奇怪的事情。笔者的 Android Studio 的 Gradle 面板上居然除了用于测试的 task 之外,其它什么 task 都没有。   解决办法也很简单。这是因为 Android Studio 默认屏蔽了其它 task。

    2024年02月13日
    浏览(32)
  • Android关于接入SDK所用jdk版本比项目高的报错问题

    What went wrong: A problem occurred evaluating project ‘:app’. java.lang.UnsupportedClassVersionError: com/google/firebase/perfugin/FirebasePerfPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 解决办法如下 在Android Studi

    2024年02月11日
    浏览(36)
  • 关于在Android 11系统手机上请求READ_PHONE_STATE权限的问题

    起因是因为bugly报错: 上网查了下,原来在Android11及以上机型上调用telephonyManager.getNetworkType()需要READ_PHONE_STATE权限,于是我就在应用启动时加上了申请该权限的代码,并且在调用getNetworkType()方法的地方加了判断,如果系统版本大于等于11并且没有被授予READ_PHONE_STATE权限,就

    2024年02月12日
    浏览(41)
  • Android Studio 关于switch case中,R资源(局部R资源)找不到问题

    对比普通工程和Library工程的R文件发现,Library工程的R文件常量缺少final。 由于Library工程的可以包含资源文件,编译会生成R文件,多个Library中可能出现id冲突的问题。为了解决这个问题谷歌将Library工程R文件才从静态常量变为非常量。 然而switch语句的case中 必须是常量,而此

    2024年02月07日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包