当前位置: 首页 > wzjs >正文

wordpress创建编辑器可视化按钮我们seo

wordpress创建编辑器可视化按钮,我们seo,江门学做网站课程,网站建设和网络营销目录 1、Arrays.asList() 1.1、方法作用 1.2、内部实现 1.3、修改元素的影响 1.4、注意事项 2、list.toArray() 2.1、方法作用 2.2、内部实现 2.3、修改元素的影响 2.4、特殊情况 1、对象引用 2、数组copy 3、对比总结 4、常见误区与解决方案 5、实际应用建议…

目录

1、Arrays.asList() 

1.1、方法作用

1.2、内部实现

1.3、修改元素的影响

1.4、注意事项

2、list.toArray() 

2.1、方法作用

2.2、内部实现

2.3、修改元素的影响

2.4、特殊情况

1、对象引用

2、数组copy

3、对比总结

4、常见误区与解决方案

5、实际应用建议


前言

        在 Java 中,list.toArray() 和 Arrays.asList() 是两个常见的集合与数组转换方法。

        它们的行为和对原始数据的影响有显著区别,下面详细分析它们的机制及对数据修改的影响。


1、Arrays.asList() 

1.1、方法作用

        Arrays.asList(T....elements) 将数组或多个元素转换为一个 List,返回的是  java.util.Arrays.ArrayList(不是  java.util.ArrayList)的实例。

1.2、内部实现

  • 这个 List 是基于原始数组的视图,即底层直接引用原始数组。
  • 该 List 的大小是固定的(不能添加或删除元素),但可以修改元素内容。

1.3、修改元素的影响

  • 修改 List 中的元素 → 会影响原始数组,因为两者共享同一内存地址。
  • 修改原始数组的元素 → 也会影响 List。

示例代码

String[] arr = {"A", "B", "C"};
List<String> list = Arrays.asList(arr);// 修改 List 中的元素
list.set(0, "X");
System.out.println(Arrays.toString(arr)); // 输出: [X, B, C]// 修改原始数组
arr[1] = "Y";
System.out.println(list); // 输出: [X, Y, C]

1.4、注意事项

  • 不能添加/删除元素:调用 add() 或 remove() 会抛出 UnsupportedOperationException。
  • 结构修改限制:仅支持修改元素内容,不支持改变集合大小。

2、list.toArray() 

2.1、方法作用

        list<T>.toArray()  将集合转换为一个数组,返回的是新数组的引用。

2.2、内部实现

  • 不论调用 list.toArray() 还是 list.toArray()(T[] a),最终都会创建一个新的数组,复制集合中的元素
  • 新数组与原始集合完全独立,修改数组中的元素不会影响集合,反之亦然。

2.3、修改元素的影响

  • 修改数组中的元素 → 不会影响原始集合。
  • 修改集合中的元素 → 不会影响数组。

示例:

List<String> list = new ArrayList<>(Arrays.asList("A", "B", "C"));
String[] arr = list.toArray(new String[0]);// 修改数组中的元素
arr[0] = "X";
System.out.println(list); // 输出: [A, B, C]// 修改集合中的元素
list.set(1, "Y");
System.out.println(Arrays.toString(arr)); // 输出: [X, B, C]

2.4、特殊情况

1、对象引用

        如果集合中存储的是对象引用(而非基本类型),修改对象的属性会影响原始集合和数组,因为它们指向同一个对象实例。

示例:

List<User> list = new ArrayList<>();
User user = new User("Tom");
list.add(user);
User[] arr = list.toArray(new User[0]);// 修改对象属性
arr[0].setName("Jerry");
System.out.println(list.get(0).getName()); // 输出: Jerry

2、数组copy

⚠️注意:强行使用array增加元素copy。

可参考:

String[] array = {"1", "2"}; // 原始数组
String[] newArray = new String[array.length + 1]; // 新建长度+1的数组
System.arraycopy(array, 0, newArray, 0, array.length); // 复制旧元素
newArray[newArray.length - 1] = "3"; // 添加新元素

小结:


3、对比总结


4、常见误区与解决方案

4.1 误区:Arrays.asList()可以创建动态列表

  • 错误:Arrays.asList()返回的列表是固定大小的,不能添加或删除元素。
  • 解决方案:如果需要动态列表,需显式转换为 new ArrayList<>(Arrays.asList(.....))。

4.4 误区 :Arrays.asList() 返回的是 java.util.ArrayList

  • 错误:Arrays.asList() 返回的是 java.util.Arrays.ArrayList,不是 java.util.ArrayList。
  • 解决方案:如果需要动态列表,显式使用  new ArrayList<>()。

4.2 误区:list.toArray() 返回的数组是集合的引用

  • 错误:list.toArray() 返回的是新数组,与集合无直接关联。
  • 解决方案:如果需要共享数据,应直接操作集合或使用 Arrays.asList()。

4.3 误区:对象引用的修改不会影响彼此

  • 注意:如果数组或集合中的元素是对象引用,修改对象的属性会同步到彼此。
  • 解决方案:如果需要独立拷贝,需手动深拷贝对象。

5、实际应用建议

  • 需要修改元素且避免副作用:使用 Arrays.asList(),但需确保不进行结构性修改。
  • 需要独立数组:使用 list.toArray()。
  • 需要动态列表:使用  new ArrayList<>(Arrays.asList(.....))。
  • 涉及对象引用时:注意深拷贝或使用不可变对象。

举例:

ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("1");
arrayList.add("2");
arrayList.add("3");
arrayList.add("4");
arrayList.add("5");
System.out.println("修改前的arrayList" + arrayList); // 输出: [1, 2, 3, 4, 5]
System.out.println("arrayList的size==" + arrayList.size()); // 输出: 5// 转换为数组
String[] array = arrayList.toArray(new String[0]);
array[0] = "6"; 
System.out.println("修改后的array" + Arrays.toString(array)); // 输出: [6, 2, 3, 4, 5]
System.out.println("修改后的arrayList" + arrayList); // 输出: [1, 2, 3, 4, 5]

关键点解释

1. list.toArray() 返回的是 新数组

  • arrayList.toArray(new String[0])会创建一个新的数组,并将 arrayList 中的所有元素复制到这个数组中。
  • 新数组和 arrayList 是独立的,它们的内存地址不同。

2. 修改数组元素不影响原集合

  • 在代码中,array[0] = "6" 只是修改了数组的第 0 个元素,但 arrayList 仍然指向原来的字符串对象 "1"
  • 因为 String 是不可变类型(Immutable),所以修改数组中的元素不会影响 arrayList 中的值。

3. 为什么原集合没有变化?

  • arrayList 和 array 是两个独立的数据结构:
    • arrayList 是一个动态集合,内部通过数组实现。
    • array 是一个静态数组,与 arrayList 无关。
  • 修改 array 中的元素,不会改变 arrayList 内部的数组内容

对比:如果元素是可变对象

        如果集合中存储的是可变对象(如自定义类),修改数组中的对象属性会影响原集合,因为它们引用的是同一个对象实例。

例如:

class User {String name;public User(String name) { this.name = name; }public void setName(String name) { this.name = name; }
}List<User> list = new ArrayList<>();
User user = new User("Tom");
list.add(user);
User[] array = list.toArray(new User[0]);// 修改数组中的对象属性
array[0].setName("Jerry");
System.out.println(list.get(0).name); // 输出: Jerry

// ✅ 可以动态添加元素
List<String> list = new ArrayList<>(Arrays.asList("1", "2"));
list.add("3"); // 成功添加// ❌ 无法动态添加元素
List<String> stringList = Arrays.asList("3", "4");
stringList.add("3"); // 抛出 UnsupportedOperationException
stringList.add("4"); // 抛出 UnsupportedOperationException

        核心原因:Arrays.asList() 返回的 List 是固定大小的


总结:

http://www.dtcms.com/wzjs/111912.html

相关文章:

  • 邯郸建设网站实时新闻最新消息
  • 陕西建设厅网站烟台seo网络推广
  • 中英文双语的网站怎么建设网络推广页面
  • 网络公司免费做网站友情链接代码美化
  • 企业网站开发教学百度资源搜索引擎
  • 各种免费源码共享网站怎么制作网站教程步骤
  • 昆明网站建设价格低友情链接还有用吗
  • 在网上做国际快递淘宝网站策划方案怎么做
  • 齐大胜请于果做网站是第几集百度竞价排名规则及费用
  • 武汉网站营销seo电话百度人工服务热线
  • 微擎如何做网站免费培训课程
  • 陕西网站建设推广网站大全
  • 美容院怎么建立自己的网站品牌营销理论有哪些
  • 网站建设实训的目的谷歌seo快速排名优化方法
  • 江西企业网站建设b2b网站平台有哪些
  • 如何成为 个网站培训心得体会300字
  • php网站开发软件语言如何做网页设计
  • 下载可以做动漫的我的世界视频网站企业网站的优化建议
  • 做企业网站需要建多大的画布全国防疫大数据平台
  • 课程设计报告 网站开发谷歌搜索入口365
  • 怎么做网站可以注册的新闻发稿公司
  • 怎么自己制作一个网站的书源怎么在百度上发布个人文章
  • 网站建设网络推广微信网站疫情优化调整
  • 网龙沧州网站制作2021年度关键词有哪些
  • wordpress外贸网站建站教程网络优化工程师主要负责什么工作
  • 不用域名也可以做网站海口seo快速排名优化
  • 中国最好的网站制作五种新型营销方式
  • 黄冈做网站公司企业seo排名外包
  • 网站建设答辩ppt模板咸阳seo
  • 电脑系统做的好的网站广告推广软文案例