• 简介 (Introduction):

    • 背景 需要解析Object数组中的数据,将数据(mintime)进行修改,改为(maxtime),修改后,生成新的对象

    • 结构图

    • 核心 对于Object数组的概念理解,对于数组的解析理解,数组赋值的理解 详见:https://www.cnblogs.com/liuyangfirst/p/12364850.html

    • 快速上手(Getting Started)

测试数据
1、创建测试对象

 class FunctionType {

     private String functionType;

     private Object[] objects;

     private boolean isDistinct;

     public String getFunctionType() {
return functionType;
} public void setFunctionType(String functionType) {
this.functionType = functionType;
} public Object[] getObjects() {
return objects;
} public void setObjects(Object[] objects) {
this.objects = objects;
} public boolean isDistinct() {
return isDistinct;
} public void setDistinct(boolean distinct) {
isDistinct = distinct;
} @Override
protected Object clone() { FunctionType functionTypeDemo = new FunctionType(); if (objects != null) {
functionTypeDemo.setObjects(objects.clone());
} functionTypeDemo.setFunctionType(functionType); functionTypeDemo.setDistinct(isDistinct); return functionTypeDemo;
}
}
2、创建测试数据

         FunctionType functionType = new FunctionType();

         functionType.setDistinct(false);
functionType.setFunctionType("max");
Object[] objects2 = new Object[1];
objects2[0] = "mintime";
functionType.setObjects(objects2); FunctionType functionType2 = new FunctionType(); functionType2.setFunctionType("from_unixtime");
functionType2.setDistinct(false);
Object[] objects3 = new Object[2];
objects3[0] = functionType;
objects3[1] = "yyyy-MM-dd HH24:mi:ss"; functionType2.setObjects(objects3);
3、创建修改方法

  private static void changeObjectParam(FunctionType functionType2, String string) {
Object[] objects = functionType2.getObjects(); // 替换
Object[] replace = new Object[1];
replace[0] = new String(string); for (int i = 0; i < objects.length; i++) {
if (objects[0] instanceof FunctionType) {
FunctionType o = (FunctionType) objects[0];
if("max".equalsIgnoreCase(o.getFunctionType())){
if("mintime".equalsIgnoreCase(o.getObjects()[0].toString())){
o.setObjects(replace);
}
} break;
}
} System.out.println(new Gson().toJson(functionType2));
}
4、测试

 public static void main(String[] args) {

         FunctionType functionType = new FunctionType();

         functionType.setDistinct(false);
functionType.setFunctionType("max");
Object[] objects2 = new Object[1];
objects2[0] = "mintime";
functionType.setObjects(objects2); FunctionType functionType2 = new FunctionType(); functionType2.setFunctionType("from_unixtime");
functionType2.setDistinct(false);
Object[] objects3 = new Object[2];
objects3[0] = functionType;
objects3[1] = "yyyy-MM-dd HH24:mi:ss"; functionType2.setObjects(objects3); String string ="replace"; // 修改mintime为maxtime
// 修改mintime为maxtime
changeObjectParam(functionType2, string); }
  • 环境 JDK1.8

    • 配置 IDEA编辑
    • 存在问题 暂无

    • 进阶篇 (Advanced):
      拓展object[]数据操作方法
      1、根据传入的key,获取object中存的值
      (1)方法

       /**
      * 获取object中存的值
      *
      * @param obj 传入的Object
      * @param key 传入的字段名称
      * @return 获取object中存的值
      */
      public static String getValueByKey(Object obj, String key) { // 得到类对象
      Class<?> objClass = obj.getClass();
      // 得到类中的所有属性集合
      Field[] fs = objClass.getDeclaredFields(); for (Field f : fs) { // 设置些属性是可以访问的
      f.setAccessible(true); try { if (f.getName().endsWith(key)) {
      return f.get(obj).toString();
      } } catch (IllegalArgumentException | IllegalAccessException e) {
      e.printStackTrace();
      }
      } return "";
      }
      (2)测试

       public static void main(String[] args) {
      
               Object[] objects = new Object[5];
      UserVO userVO = new UserVO("zhansan", "888");
      objects[0] = userVO;
      objects[1] = new Date();
      // name 是UserVO对象的字段属性名
      String name = getValueByKey(objects[0], "name");
      System.out.println("value: " + name);
      }
      2、根据传入的值,获取object中存的key
      (1)方法

       /**
      * 获取object中存的关键字
      *
      * @param obj 传入的Object
      * @return 获取object中存的关键字
      */
      public static String getKey(Object obj) { // 得到类对象
      Class<?> objClass = obj.getClass();
      // 得到类中的所有属性集合
      Field[] fs = objClass.getDeclaredFields(); for (Field f : fs) { // 设置些属性是可以访问的
      f.setAccessible(true); try { return f.getName(); } catch (IllegalArgumentException e) {
      e.printStackTrace();
      }
      } return "";
      }
      (2)测试

       public static void main(String[] args) {
      
               Object[] objects = new Object[5];
      UserVO userVO = new UserVO("zhansan", "888");
      objects[0] = userVO;
      objects[1] = new Date(); String key = getKey(objects[0]);
      System.out.println("key: " + key);
      }
      3、根据传入的key,修改object[]中的对象的值
      (1)方法

       /**
      * 修改object中参数的值
      *
      * @param obj 传入的Object
      * @param key 传入的字段名称
      * @param newValue 改变的值
      */
      public static void changeObjectValueByKey(Object obj, String key, String newValue) { // 得到类对象
      Class<?> objClass = obj.getClass();
      // 得到类中的所有属性集合
      Field[] fs = objClass.getDeclaredFields(); for (Field f : fs) { // 设置些属性是可以访问的
      f.setAccessible(true);
      try { if (f.getName().endsWith(key)) {
      if (newValue.equalsIgnoreCase(f.get(obj).toString())) {
      f.set(obj, key);
      }
      } } catch (IllegalArgumentException | IllegalAccessException e) {
      e.printStackTrace();
      }
      }
      }
      (2)测试

       public static void main(String[] args) {
      
               Object[] objects = new Object[5];
      UserVO userVO = new UserVO("zhansan", "888");
      objects[0] = userVO;
      objects[1] = new Date(); changeObjectValueByKey(objects[0], "name", "lisi");
      System.out.println("user: " + new Gson().toJson(objects));
      }
      4、根据传入的索引,修改object[]中的对象的值
      (1)方法

       public static void changeObjectValue(Object[] obj, int index, String newValue) {
      
               for (int i = 0; i < obj.length; i++) {
      
                   if (i == index) {
      
                       if (obj[i] instanceof Object[]) {
      Object[] objects = (Object[]) obj[i];
      objects[0] = newValue;
      }
      }
      }
      }
      (2)测试

       public static void main(String[] args) {
      
               Object[] objects = new Object[5];
      UserVO userVO = new UserVO("zhansan", "888");
      objects[0] = userVO;
      objects[1] = new Date(); changeObjectValue(objects, 0, "lisi");
      System.out.println("user: " + new Gson().toJson(objects));
      }
      5、修改object中的值
      (1)方法

       public static String getChildValueFromList(Object[] obj, int index) {
      
               for (int i = 0; i < obj.length; i++) {
      
                   if (i == index) {
      
                       if (obj[i] instanceof Object[]) {
      Object[] objects = (Object[]) obj[i];
      return objects[0].toString();
      }
      }
      } return "";
      }
      (2)测试

       public static void main(String[] args) {
      
               Object[] objects = new Object[5];
      UserVO userVO = new UserVO("zhansan", "888");
      objects[0] = userVO;
      objects[1] = new Date(); String childValue = getChildValueFromList(objects, 2);
      System.out.println("childValue: " + childValue);
      }

java 怎样 改变 数组元素的值的更多相关文章

  1. vue项目中,更改数组元素的值,视图没有实时更新?

    问题背景: export default { data(){ showItems: [false, false, false, false] }, methods: { showItem(index) ...

  2. js改变HTML元素的值

    js改变HTML元素的值(常用,备忘) <!DOCTYPE html> <html> <body> <h1>我的第一段 JavaScript</h ...

  3. Java-Runoob-高级教程-实例-方法:02. Java 实例 – 输出数组元素

    ylbtech-Java-Runoob-高级教程-实例-方法:02. Java 实例 – 输出数组元素 1.返回顶部 1. Java 实例 - 输出数组元素  Java 实例 以下实例演示了如何通过重 ...

  4. Java-Runoob-高级教程-实例-数组:11. Java 实例 – 删除数组元素

    ylbtech-Java-Runoob-高级教程-实例-数组:11. Java 实例 – 删除数组元素 1.返回顶部 1. Java 实例 - 删除数组元素  Java 实例 以下实例演示了如何使用 ...

  5. java算法面试题:有数组a[n],用java代码将数组元素顺序颠倒

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.List; ...

  6. for-each用法误区(不能改变数组元素值)

    代码例程: /**  * 数据加密传输  */ import java.util.Scanner; public class secretPass {     public static void m ...

  7. php的array数组 -------方法foreach循环时候,利用数组里值的引用地址(& )从而改变数组里的值

    /* * 把每个数组值后面都加个SQL然后返回数组 * foreach循环时候,直接用引用(&)的方式就能改变之前的数组 */public function array_foreach(){ ...

  8. 用java代码将数组元素顺序颠倒

    package test; public class Recover { public int[] reverse(int[] a) { int[] b = new int[a.length]; in ...

  9. IT兄弟连 Java语法教程 数组 使用foreach循环遍历数组元素

    从JDK5之后,Java提供了一种更简单的循环:foreach循环,也叫作增强for循环,这种循环遍历数组和集合更加简洁.使用foreach循环遍历数组和集合元素时,无需获得数组或集合的长度,无需根据 ...

随机推荐

  1. 温故知新-java的I/O模型-BIO&NIO&AIO

    文章目录 摘要 传统的BIO编程 伪异步I/O编程 NIO编程 AIO编程 几种IO模型的对比 netty 参考 你的鼓励也是我创作的动力 Posted by 微博@Yangsc_o 原创文章,版权声 ...

  2. ArrayList、LinkedList、Vector、Array和HashMap、HashTable

    就 ArrayList 与 Vector 主要从二方面来说. 一.同步性:Vector 是线程安全的,也就是说是同步的,而ArrayList 是线程序不安全的,不是同步的 二.数据增长:当需要增长时, ...

  3. 【大厂面试07期】说一说你对synchronized锁的理解?

    synchronized锁的原理也是大厂面试中经常会涉及的问题,本文主要通过对以下问题进行分析讲解,来帮助大家理解synchronized锁的原理. 1.synchronized锁是什么?锁的对象是什 ...

  4. netty实现消息中心(一)思路整理

    一.需求 需要实现直播间的以下功能: 群发消息(文本.图片.推荐商品) 点对点私发消息(文本.图片.推荐商品) 单个用户禁言 全体用户禁言 撤回消息 聊天记录持久化 二.技术实现 服务端消息中心采用n ...

  5. 十几万条数据的表中,基于帝国cms 。自己亲身体验三种批量更新数据的方法,每一种的速度是什么样的

    需求是 上传Excel 读取里面的数据.根据Excel中某一个字段,与数据表中的一个字段的唯一性.然后把 Excel表中数据和数据库表中数据一次更改.本次测试一次更新31条数据. 本次测试基于帝国cm ...

  6. git status –s

    状态简览 git status 命令的输出十分详细,但其用语有些繁琐. 如果你使用 git status -s 命令或 git status --short 命令,你将得到一种更为紧凑的格式输出. 运 ...

  7. 使用 Spark SQL 高效地读写 HBase

    Apache Spark 和 Apache HBase 是两个使用比较广泛的大数据组件.很多场景需要使用 Spark 分析/查询 HBase 中的数据,而目前 Spark 内置是支持很多数据源的,其中 ...

  8. springboot的坑

    No tests found for given includes:xxxx 找不到findOne()方法 可以用它的findById(id).orElse(null); 存在就会直接返回值,如果不存 ...

  9. C++中为什么按两次ctrl+D才能结束标准I/O

    参考资料: https://www.douban.com/group/topic/127062773/ 今天学习了C++语言的标准I/O,也就是std::cin和std::cout,但是我发现当系统在 ...

  10. Android学习笔记基于回调的事件处理

    流程: 常见的回调方法: 代码示例: @Override public boolean onTouchEvent(MotionEvent event) { Toast.makeText(getAppl ...