java集合问题-集合中关于addAll的一些问题

问题描述

集合中关于addAll的一些问题

集合a,b, a.addAll(b),a中添加的是b中元素的地址还是具体的元素,我理解是存的地址,那为什么修改a或b中的元素,不会影响另一个

解决方案

ArrayList<Object> array=new ArrayList<Object>();
    String[] ss={"a","b","c"};
    array.add(ss);
    ArrayList<Object> array2=new ArrayList<Object>();
    array2.addAll(array);
    ((String[])array2.get(0))[0]="d";
    Assert.assertEquals(((String[])array2.get(0))[0],((String[])array.get(0))[0]);//sucess

    ArrayList<Object> array=new ArrayList<Object>();
    array.add("ss");
    ArrayList<Object> array2=new ArrayList<Object>();
    array2.addAll(array);
    array2.set(0, "sd");
    Assert.assertEquals(array2.get(0),array.get(0));//failed

解决方案二:

数组转换成集合,为什么集合元素的改变会影响数组

解决方案三:

首先集合是一个泛概念,你用的是那种集合?ArrayList?HashSet?
我可以确定的时修改a或b中的元素会影响另一个

贴出你的代码

解决方案四:

List集合以及add() 与addAll()的区别

解决方案五:

看你添加的是什么类型,如果是值类型,不影响,如果是引用类型,影响

解决方案六:

建议去看一下该方法的源码!我已不记得了,但是对于这个方法,我的理解是遍历b集合,复制b集合中的每个元素,并添加到a集合中去!所以存的并不是b集合的索引~

时间: 2024-10-25 19:18:16

java集合问题-集合中关于addAll的一些问题的相关文章

java的Map集合中按value值进行排序输出的实例代码_java

java的Map集合中按value值进行排序输出的实例代码 import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.Map; import java.util.Set; public class Test { public static void main(String[] args) { Map<String ,Integer> map = new Has

Java基础-15总结对象数组,集合Collection,集合List

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型.它存储引用类型的时候的数组就叫对象数组. (2)案例: 用数组存储5个学生对象,并遍历数组. package cn.itcast_01;

基于Java回顾之集合的总结概述_java

Java中的集合主要集中在2部分,一部分是java.util包中,一部分是java.util.concurrent中,后者是在前者的基础上,定义了一些实现了同步功能的集合. 这篇文章主要关注java.util下的各种集合对象.Java中的集合对象可以粗略的分为3类:List.Set和Map.对应的UML图如下(包括了java.util下大部分的集合对象):Collection概述 Java集合中的List和Set都从Collection出来,它是一个学习集合很不错的入口,它包含了集合中通常需要有

java多线程读取集合对象后写入同一文件

问题描述 java多线程读取集合对象后写入同一文件 有一个学生对象,包含学号.姓名.班级属性 生成10个学生对象后放入集合中 运用多线程读取集合中学生对象后将学生信息写入到同一文件(按学生学号排序) 本人多线程实在不会,求大神解答.(不实现排序的也行)主要是能有多线程方面的代码提供下参考 解决方案 文件写使用多线程要加锁,还不如用单线程,你这是要干嘛

刚刚学java ,用集合怎么做

问题描述 刚刚学java ,用集合怎么做 sfjakfjkaskfjskfjjksafdopsjiffdnjflkadkllscfdamkfaslfcaslOIE fvckooafhnausjHFCIOVFIG 解决方案 用HashMap,a,b,c,d为key,出现的次数为value,依次取出字符串中的字母,然后让相应字母对应的value值加1 解决方案二: 刚刚起步学java 解决方案三: System.out.println("请输入:"); Scanner scan = new

java关于TreeSet集合的问题,为什么每次添加只能添加进去一个,再添加的时候就会覆盖掉前面那个

问题描述 java关于TreeSet集合的问题,为什么每次添加只能添加进去一个,再添加的时候就会覆盖掉前面那个 不知道为什么只能添加一个对象进去,添加第二次的时候就覆盖掉了第一次添加进去的.麻烦大家了! 这是main方法 if("a".equalsIgnoreCase(option)){ //查看图书的功能 d.cheekBook(); } else if("b".equalsIgnoreCase(option)){ //添加图书的功能 System.out.pri

java的泛型集合求大神指教

问题描述 java的泛型集合求大神指教 animal ani=new animal("欧欧", "欧瑞娜"); animal ani2=new animal("丫丫", "拉布拉多"); animal ani3=new animal("菲菲", "拉布拉多"); animal ani4=new animal("美美", "欧瑞娜"); List l

图片-Java如何将集合写进联系人系统

问题描述 Java如何将集合写进联系人系统 # Java如何将集合写进联系人系统 解决方案 for-each循环. 解决方案二: for (E item : con) { 插入数据库 }

Java SOS 7.35发布 一套Java的Servlet集合

Java SOS是一套Java的Servlet集合,例如日程.表单处理.聊天的,可以用来快速的搭建网站.是由一组用于快速建站可配置的Java servlets所组成.包括Forums.Chat.Calendar.HttpProxy等servlets. Java SOS 7.35对代码库进行了更新,增加了新的组件. 下载地址:http://www.servletsuite.com/servlets/sos_735.zip