首页 / JAVA / java 怎样 改变 数组元素的值
java 怎样 改变 数组元素的值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java 怎样 改变 数组元素的值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7031字,纯文字阅读大概需要11分钟。
内容图文
-
简介 (Introduction):
-
背景 需要解析Object数组中的数据,将数据(mintime)进行修改,改为(maxtime),修改后,生成新的对象
-
结构图
-
核心 对于Object数组的概念理解,对于数组的解析理解,数组赋值的理解 详见:https://www.cnblogs.com/liuyangfirst/p/12364850.html
-
快速上手(Getting Started)
-
测试数据
1、创建测试对象
1 class FunctionType { 2 3 4 private String functionType; 5 6 private Object[] objects; 7 8 9 private boolean isDistinct; 10 11 12 public String getFunctionType() { 13 return functionType; 14 } 15 16 public void setFunctionType(String functionType) { 17 this.functionType = functionType; 18 } 1920public Object[] getObjects() { 21return objects; 22 } 2324publicvoid setObjects(Object[] objects) { 25this.objects = objects; 26 } 2728publicboolean isDistinct() { 29return isDistinct; 30 } 3132publicvoid setDistinct(boolean distinct) { 33 isDistinct = distinct; 34 } 3536 @Override 37protected Object clone() { 3839 FunctionType functionTypeDemo = new FunctionType(); 4041if (objects != null) { 42 functionTypeDemo.setObjects(objects.clone()); 43 } 4445 functionTypeDemo.setFunctionType(functionType); 4647 functionTypeDemo.setDistinct(isDistinct); 4849return functionTypeDemo; 50 } 51 }
2、创建测试数据
1 FunctionType functionType = new FunctionType(); 2 3 functionType.setDistinct(false); 4 functionType.setFunctionType("max"); 5 Object[] objects2 = new Object[1]; 6 objects2[0] = "mintime"; 7 functionType.setObjects(objects2); 8 9 FunctionType functionType2 = new FunctionType(); 1011 functionType2.setFunctionType("from_unixtime"); 12 functionType2.setDistinct(false); 13 Object[] objects3 = new Object[2]; 14 objects3[0] = functionType; 15 objects3[1] = "yyyy-MM-dd HH24:mi:ss"; 1617 functionType2.setObjects(objects3);
3、创建修改方法
1 private static void changeObjectParam(FunctionType functionType2, String string) { 2 Object[] objects = functionType2.getObjects(); 3 4 5// 替换 6 Object[] replace = new Object[1]; 7 replace[0] = new String(string); 8 9for (int i = 0; i < objects.length; i++) { 10if (objects[0] instanceof FunctionType) { 11 FunctionType o = (FunctionType) objects[0]; 12if("max".equalsIgnoreCase(o.getFunctionType())){ 13if("mintime".equalsIgnoreCase(o.getObjects()[0].toString())){ 14 o.setObjects(replace); 15 } 16 } 171819break; 20 } 21 } 222324 System.out.println(new Gson().toJson(functionType2)); 25 }
4、测试
1 public static void main(String[] args) { 2 3 4 FunctionType functionType = new FunctionType(); 5 6 functionType.setDistinct(false); 7 functionType.setFunctionType("max"); 8 Object[] objects2 = new Object[1]; 9 objects2[0] = "mintime"; 10 functionType.setObjects(objects2); 1112 FunctionType functionType2 = new FunctionType(); 1314 functionType2.setFunctionType("from_unixtime"); 15 functionType2.setDistinct(false); 16 Object[] objects3 = new Object[2]; 17 objects3[0] = functionType; 18 objects3[1] = "yyyy-MM-dd HH24:mi:ss"; 1920 functionType2.setObjects(objects3); 2122 String string ="replace"; 2324// 修改mintime为maxtime 25// 修改mintime为maxtime26 changeObjectParam(functionType2, string); 272829 }
-
环境 JDK1.8
- 配置 IDEA编辑
-
存在问题 暂无
-
进阶篇 (Advanced):
拓展object[]数据操作方法
1、根据传入的key,获取object中存的值
(1)方法1 /** 2 * 获取object中存的值 3 * 4 * @param obj 传入的Object 5 * @param key 传入的字段名称 6 * @return 获取object中存的值 7 */ 8 public static String getValueByKey(Object obj, String key) { 9 10 // 得到类对象 11 Class<?> objClass = obj.getClass(); 12// 得到类中的所有属性集合13 Field[] fs = objClass.getDeclaredFields(); 1415for (Field f : fs) { 1617// 设置些属性是可以访问的18 f.setAccessible(true); 1920try { 2122if (f.getName().endsWith(key)) { 23return f.get(obj).toString(); 24 } 2526 } catch (IllegalArgumentException | IllegalAccessException e) { 27 e.printStackTrace(); 28 } 29 } 3031return ""; 32 }
(2)测试
1 public static void main(String[] args) { 2 3 Object[] objects = new Object[5]; 4 UserVO userVO = new UserVO("zhansan", "888"); 5 objects[0] = userVO; 6 objects[1] = new Date(); 7// name 是UserVO对象的字段属性名 8 String name = getValueByKey(objects[0], "name"); 9 System.out.println("value: " + name); 10 }
2、根据传入的值,获取object中存的key
(1)方法
1 /** 2 * 获取object中存的关键字 3 * 4 * @param obj 传入的Object 5 * @return 获取object中存的关键字 6 */ 7 public static String getKey(Object obj) { 8 9 // 得到类对象 10 Class<?> objClass = obj.getClass(); 11// 得到类中的所有属性集合12 Field[] fs = objClass.getDeclaredFields(); 1314for (Field f : fs) { 1516// 设置些属性是可以访问的17 f.setAccessible(true); 1819try { 2021return f.getName(); 2223 } catch (IllegalArgumentException e) { 24 e.printStackTrace(); 25 } 26 } 2728return ""; 29 }
(2)测试
1 public static void main(String[] args) { 2 3 Object[] objects = new Object[5]; 4 UserVO userVO = new UserVO("zhansan", "888"); 5 objects[0] = userVO; 6 objects[1] = new Date(); 7 8 String key = getKey(objects[0]); 9 System.out.println("key: " + key); 10 }
3、根据传入的key,修改object[]中的对象的值
(1)方法
1 /** 2 * 修改object中参数的值 3 * 4 * @param obj 传入的Object 5 * @param key 传入的字段名称 6 * @param newValue 改变的值 7 */ 8 public static void changeObjectValueByKey(Object obj, String key, String newValue) { 9 10 // 得到类对象 11 Class<?> objClass = obj.getClass(); 12// 得到类中的所有属性集合13 Field[] fs = objClass.getDeclaredFields(); 1415for (Field f : fs) { 1617// 设置些属性是可以访问的18 f.setAccessible(true); 19try { 2021if (f.getName().endsWith(key)) { 22if (newValue.equalsIgnoreCase(f.get(obj).toString())) { 23 f.set(obj, key); 24 } 25 } 2627 } catch (IllegalArgumentException | IllegalAccessException e) { 28 e.printStackTrace(); 29 } 30 } 31 }
(2)测试
1 public static void main(String[] args) { 2 3 Object[] objects = new Object[5]; 4 UserVO userVO = new UserVO("zhansan", "888"); 5 objects[0] = userVO; 6 objects[1] = new Date(); 7 8 9 changeObjectValueByKey(objects[0], "name", "lisi"); 10 System.out.println("user: " + new Gson().toJson(objects)); 11 }
4、根据传入的索引,修改object[]中的对象的值
(1)方法
1 public static void changeObjectValue(Object[] obj, int index, String newValue) { 2 3for (int i = 0; i < obj.length; i++) { 4 5if (i == index) { 6 7if (obj[i] instanceof Object[]) { 8 Object[] objects = (Object[]) obj[i]; 9 objects[0] = newValue; 10 } 11 } 12 } 13 }
(2)测试
1 public static void main(String[] args) { 2 3 Object[] objects = new Object[5]; 4 UserVO userVO = new UserVO("zhansan", "888"); 5 objects[0] = userVO; 6 objects[1] = new Date(); 7 8 9 changeObjectValue(objects, 0, "lisi"); 10 System.out.println("user: " + new Gson().toJson(objects)); 11 }
5、修改object中的值
(1)方法
1 public static String getChildValueFromList(Object[] obj, int index) { 2 3for (int i = 0; i < obj.length; i++) { 4 5if (i == index) { 6 7if (obj[i] instanceof Object[]) { 8 Object[] objects = (Object[]) obj[i]; 9return objects[0].toString(); 10 } 11 } 12 } 131415return ""; 16 }
(2)测试
1 public static void main(String[] args) { 2 3 Object[] objects = new Object[5]; 4 UserVO userVO = new UserVO("zhansan", "888"); 5 objects[0] = userVO; 6 objects[1] = new Date(); 7 8 String childValue = getChildValueFromList(objects, 2); 9 System.out.println("childValue: " + childValue); 10 }
原文:https://www.cnblogs.com/liuyangfirst/p/13267008.html
内容总结
以上是互联网集市为您收集整理的java 怎样 改变 数组元素的值全部内容,希望文章能够帮你解决java 怎样 改变 数组元素的值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。