java从list中取出对象并获得其属性值的方法
最近公司的项目需要导出csv文件,一个同事用最原始的方式将每条记录取出然后加“,”解决。
但是客户后面要求在每个页面当中都加入这个功能。于是,问题来了,分开写代码太多,合起来又不能确定在list中存储的对象为哪个对象,不能用get方法获得属性。
我一直认为当初他那样写就将程序写死了。可是,在多次尝试后,还是通过java的反射从list中取出了对象,从对象中取出了属性值:
下面是代码:
package com.hb.test;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws IllegalArgumentException,
Exception {
Person p1 = new Person("111", "aaa");
Person p2 = new Person("222", "bbb");
List list = new ArrayList();
list.add(p1);
list.add(p2);
test(list);
}
public static void test(List list) throws Exception, IllegalAccessException {
for (int i = 0; i < list.size(); i++) {
Field[] fields = list.get(i).getClass().getDeclaredFields();
Object oi = list.get(i);
for (int j = 0; j < fields.length; j++) {
if(!fields[j].isAccessible()){
fields[j].setAccessible(true);
}
System.out.println(fields[j].get(oi));
}
}
}
}
这样在不知道从list中取出的为何对象的时候,也能够取得对象的属性值,就可以写出一个公共的方法来传入List对象,然后进行csv文件的生成,导出了。
相关推荐
-
Java对List进行排序的两种实现方法
前言 Java.util包中的List接口继承了Collection接口,用来存放对象集合,所以对这些对象进行排序的时候,要么让对象类自己实现同类对象的比较,要么借助比较器进行比较排序. 学生实体类,包含姓名和年龄属性,比较时先按姓名升序排序,如果姓名相同则按年龄升序排序. 第一种:实体类自己实现比较 (实现comparable接口:public interface Comparable<T> ,里面就一个方法声明:public int compareTo(T o); ) 示例代码: publ
-
java list去重操作实现方式
Java中的List是可以包含重复元素的(hash code 和equals),那么对List进行去重操作有两种方式实现: 方案一:可以通过HashSet来实现,代码如下: 复制代码 代码如下: class Student { private String id; private String name; public Student(String id, String name) { super(); this.id = id; this.name = name; } @Override pu
-
java实现List中对象排序的方法
本文实例讲述了java实现List中对象排序的方法.分享给大家供大家参考,具体如下: package com.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class NewsManager { /** * @param args */ public static void main(String[
-
java中List对象列表实现去重或取出及排序的方法
前言 因为在面试的时候碰到几次list的去重和排序,觉着有必要给大家总结一下具体的方法,分享出来供大家学习参考,话不多说了,来一起看看下面介绍的一种做法: 一.list去重 1.1 实体类Student List<Student>容量10k以上,要求去重复.这里Student的重复标准是属性相同,因此需要重写equals和hashcode方法,不知道有几个可以手写出来. student的equals方法: public void equals(Object o){ if(this == o)
-
java中List对象排序通用方法
本文实例讲述了java中List对象排序通用方法.分享给大家供大家参考.具体分析如下: 在数据库中查出来的列表list中,往往需要对不同的字段重新排序,一般的做法都是使用排序的字段,重新到数据库中查询.如果不到数据库查询,直接在第一次查出来的list中排序,无疑会提高系统的性能. 只要把第一次查出来的结果存放在session中,就可以对list重新排序了.一般对list排序可以使用Collections.sort(list),但如果list中包含是一个对象的话,这种方法还是行不通的.那要怎么排序
-
Java中对list元素进行排序的方法详解
在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList.这些集合提供了对对象组的索引访问.他们提供了元素的添加与删除支持.然而,它们并没有内置的元素排序支持. 你能够使用java.util.Collections类中的sort()方法对List元素进行排序.你既可以给方法传递一个List对象,也可以传递一个List和一个Comparator.如果列表中的元素全都是相同类型的类,并且这个类实现了Comparable接口,你可
-
java正则表达式实现提取需要的字符并放入数组【ArrayList数组去重复功能】
本文实例讲述了java正则表达式实现提取需要的字符并放入数组.分享给大家供大家参考,具体如下: 这里演示Java正则表达式提取需要的字符并放入数组,即ArrayList数组去重复功能. 具体代码如下: package com.test.tool; import java.util.ArrayList; import java.util.HashSet; import java.util.regex.*; public class MatchTest { public static void ma
-
java从list中取出对象并获得其属性值的方法
最近公司的项目需要导出csv文件,一个同事用最原始的方式将每条记录取出然后加","解决.但是客户后面要求在每个页面当中都加入这个功能.于是,问题来了,分开写代码太多,合起来又不能确定在list中存储的对象为哪个对象,不能用get方法获得属性.我一直认为当初他那样写就将程序写死了.可是,在多次尝试后,还是通过java的反射从list中取出了对象,从对象中取出了属性值: 下面是代码: 复制代码 代码如下: package com.hb.test; import java.lang.refl
-
详解Java在redis中进行对象的缓存
Java在redis中进行对象的缓存一般有两种方法,这里介绍序列化的方法,个人感觉比较方便,不需要转来转去. 一.首先,在存储的对象上实现序列化的接口 package com.cy.example.entity.system; import java.util.List; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.annotations.TableName; im
-
java基于反射得到对象属性值的方法
本文实例讲述了java基于反射得到对象属性值的方法.分享给大家供大家参考,具体如下: 通过反射机制得到对象中的属性和属性值 在对象中private没问题,在别的类中有时会报异常.下面的例子是在本对象中 /** * Engine entity. @author MyEclipse Persistence Tools */ public class Engine implements java.io.Serializable { // Fields private Long engineId; pr
-
Java 在Excel中添加分离型饼图、环形图的方法
一.概述 Excel中可支持多种不同类型的图表,本文介绍如何绘制分离型饼图和环形图.其中,分离型饼图的绘制可分为整体分离型(即设置饼图分离程度)和局部分离(即设置点爆炸型值)两种情况.下面将以Java程序代码介绍如何在Excel中实现以上图形. 二.程序环境 Spire.Xls.jar Jdk 1.8.0(版本>=1.6.0即可) IDEA 注:Jar使用的是Free Spire.XLS for Java(免费版)中的Spire.Xls.jar.编辑代码前,导入jar到Java程序,两种方法可导
-
Java Web项目中使用Socket通信多线程、长连接的方法
很多时候在javaweb项目中我们需要用到Socket通信来实现功能,在web中使用Socket我们需要建立一个监听程序,在程序启动时,启动socket监听.我们的应用场景是在java项目中,需要外接如一个硬件设备,通过tcp通信,获取设备传上来的数据,并对数据做回应. 先看一下web的监听代码: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; public class
-
Java通过反射机制动态设置对象属性值的方法
/** * MethodName: getReflection<br> * Description:解析respXML 在通过反射设置对象属性值 * User: liqijing * Date:2015-7-19下午12:42:55 * @param clzzName * @param respXML * @return * @throws ClassNotFoundException * @throws DocumentException * @throws IllegalArgumentE
-
js简单遍历获取对象中的属性值的方法示例
本文实例讲述了js简单遍历获取对象中的属性值的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <
-
微信小程序开发之改变data中数组或对象的某一属性值
前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下: wxml如下: <scroll-view class='hd-cont' scroll-x="true" style='width: 100%'> <view wx:for="{{sDate}}" wx:key="{{index}}" class='date-con
-
Angular中使用$watch监听object属性值的变化(详解)
Angular中的$watch可以监听属性值的变化,然后并做出相应处理. 常见用法: $scope.$watch("person", function(n, o){ //todo something... }) 但是对于一个对象中的某个属性值变化时,$watch似乎不管用了. 示例代码: <body> <div ng-controller="mainCtrl"> <input id="myText" type=&qu
-
$.each遍历对象、数组的属性值并进行处理
通过它,你可以遍历对象.数组的属性值并进行处理. 使用说明 each函数根据参数的类型实现的效果不完全一致: 1.遍历对象(有附加参数) $.each(Object, function(p1, p2) { this; //这里的this指向每次遍历中Object的当前属性值 p1; p2; //访问附加参数 }, ['参数1', '参数2']); 2.遍历数组(有附件参数) $.each(Array, function(p1, p2){ this; //这里的this指向每次遍历中Array的当
随机推荐
- Apache Thrift环境配置
- 歌词编辑器和选择歌曲可播放的网页
- php实现编辑和保存文件的方法
- 灵活实用VBS入门教程应用篇
- 花3分钟时间来关闭你电脑上没用的服务(加快你的电脑运行)
- vue监听scroll的坑的解决方法
- C#实现支持断点续传多线程下载客户端工具类
- PHP通过COM使用ADODB的简单例子
- 老生常谈python函数参数的区别(必看篇)
- java基于servlet使用组件smartUpload实现文件上传
- C#创建二叉搜索树的方法
- JavaScript中的对象继承关系
- php中关于长度计算容易混淆的问题分析
- C#自定义事件及用法实例
- mysql 5.7.12 winx64手动安装教程
- JDK的Parser来解析Java源代码详解
- 详解如何让InstantClick兼容MathJax、百度统计等
- Android5.1 取消录制屏幕跳出的权限对话框问题
- net.sf.json.JSONObject 为null 的判断方法
- 解析php中获取系统信息的方法