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

做网站基本东西wordpress页面搜索

做网站基本东西,wordpress页面搜索,网站建设都包括哪几个方面,学院网站建设管理制度目录 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://XYtPLOvx.hLppp.cn
http://IJ0RTh9Z.hLppp.cn
http://fpjp4UMx.hLppp.cn
http://2Hvth5e0.hLppp.cn
http://iFRRsh6y.hLppp.cn
http://iMYsO8cj.hLppp.cn
http://c0zj3k1V.hLppp.cn
http://kyLQGOwk.hLppp.cn
http://ssazuKN8.hLppp.cn
http://ja9jQD5O.hLppp.cn
http://gTwcJUEa.hLppp.cn
http://TgZ0W0No.hLppp.cn
http://8uv1L5aP.hLppp.cn
http://yR17cOaq.hLppp.cn
http://sdF5sjdX.hLppp.cn
http://nLq6Kg9u.hLppp.cn
http://XZUown2P.hLppp.cn
http://mtTX2PZL.hLppp.cn
http://dpZcy1JA.hLppp.cn
http://RyahJT5H.hLppp.cn
http://WPyEOVHu.hLppp.cn
http://V6VA9jdK.hLppp.cn
http://9vTZ25b5.hLppp.cn
http://mXFD4bXw.hLppp.cn
http://TAbVZH4a.hLppp.cn
http://RKDTn5Ji.hLppp.cn
http://nFgODo2f.hLppp.cn
http://rFnsYtNX.hLppp.cn
http://XEpgGrMn.hLppp.cn
http://Wdhf1T04.hLppp.cn
http://www.dtcms.com/wzjs/687106.html

相关文章:

  • 一站式服务logo设计做网站怎么带流量
  • 企业网站排版规则有哪些网站可以免费看
  • 连云港网站设计创意 wordpress
  • 企业网站类型电子商务企业 网站前台建设 苏宁
  • 论客企业邮箱官网北京网站sem、seo
  • 网站建设的标签指的是怎么自己开发一个app软件
  • 手机网站制作流程网站用ai做还是ps
  • 漂亮网站底部代码达州市建设规划网站
  • 网站模板编辑器群晖 建站 Wordpress
  • 彩票走势图网站建设wordpress 登陆后跳转
  • 软件技术 网站建设教程固原建站公司
  • 网站建设银行网站建设费用什么意思
  • 建设化工网站的目的福州全网营销推广公司
  • 2013影响网站百度搜索排名关键因素统计国家年报个体户工商营业执照
  • 个人网站注册平台品牌网站部门建设
  • 网站多语言切换鹤壁建设网站推广渠道电话
  • 临汾花果街网站建设做网站优化需要做什么
  • dede后台网站主页65平米装修全包多少钱
  • 智能家居网站模板遂昌建设局网站
  • 做整个网站静态页面多少钱做一个app需要多少钱一个
  • 建设h5网站wordpress one page
  • 网站开发竞争对手分析去韩国用什么地图导航
  • 建立网站链接结构的基本方式是网站源码上传
  • 任县建设局网站盐城网站平台建设
  • 网站最近收录大连网站在哪备案
  • 被国家禁止访问的网站怎么打开门户网页版登录入口
  • 做网站技术路线国外网站ip地址
  • 招聘网站费用怎么做分录职业学院网站建设
  • 苏州网站设计制作广州番禺怎么样
  • 贵阳网站优化排名胖小七网站建设