关于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 没有文件存储权限保存文件的问题

    我发现Android 有些APP 他们不需要申请文件存储权限就可以进行文件的保存翻阅大量文章总结如下: 从 Android 10 开始,Android 引入了一种新的存储权限模型,其中应用需要明确请求运行时权限以访问外部存储。在这种情况下,许多应用程序可能需要请求 WRITE_EXTERNAL_STORAGE 权限才

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

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

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

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

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

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

    2024年02月07日
    浏览(49)
  • 出现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日
    浏览(47)
  • Android13关于获取外部存储文件的相关问题及解决方案记录

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

    2024年01月15日
    浏览(66)
  • 解决 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日
    浏览(49)
  • 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日
    浏览(45)
  • 关于在Android 11系统手机上请求READ_PHONE_STATE权限的问题

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

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

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

    2024年02月07日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包