Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于动态对象字段的ArrayList排序?

基于动态对象字段的ArrayList排序?
EN

Stack Overflow用户
提问于 2013-09-23 22:47:01
回答 4查看 1.8K关注 0票数 0

我在下面的代码中遇到一个问题

代码语言:javascript
运行
AI代码解释
复制
public void columnsList(List<TableRecord> records){

    for(TableRecord record : records){
        Table table = record.getTable();
        //Do sort here on stampDate
        Field[] fields = table.fields();
        for(Field field : fields){
            field.getName();
            record.getValue(field);

        }
    }

}

records对象包含不同类类型的对象。

代码语言:javascript
运行
AI代码解释
复制
List<TableRecord> records = new List<TableRecord>();
records.add(new AddressRecord());
records.add(new CityRecord());
records.add(new UserRecord());

现在,我需要如何根据stampDate变量(在每个类中)对它们进行排序,当列表中有不同的类时,我们如何进行排序?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-23 22:54:59

如果无法更改类,则编写比较器( Comparator<Object>),这将尝试查找字段stampDate并对它们进行比较。也不愿用它来排序列表。比较国执行情况:

代码语言:javascript
运行
AI代码解释
复制
import java.util.Comparator;
import java.util.Date;


public class StampDateComparator implements Comparator<Object> {

@Override
public int compare(Object o1, Object o2) {

    try {
        Date d1 = (Date) o1.getClass().getDeclaredField("stampDate").get(o1);
        Date d2 = (Date) o2.getClass().getDeclaredField("stampDate").get(o2);
        return compare(d1, d2);
    } catch (SecurityException e) {
        throw new RuntimeException(e);
    } catch (NoSuchFieldException e) {
        throw new RuntimeException("Missing variable stampDate");
    }catch (ClassCastException e) {
        throw new RuntimeException("stampDate is not a Date");
    } catch (IllegalArgumentException e) {
        //shoud not happen
        throw new RuntimeException(e);
    } catch (IllegalAccessException e) {
        throw new RuntimeException(e);
    }
}

}
票数 1
EN

Stack Overflow用户

发布于 2013-09-23 22:54:14

如果上面的代码是正确的,这意味着AddressRecordCityRecordUserRecord都扩展了TableRecord

代码语言:javascript
运行
AI代码解释
复制
class AddressRecord extends TableRecord {
    // other fields and methods here
}
class CityRecord extends TableRecord {
    // other fields and methods here
}
class UserRecord extends TableRecord {
    // other fields and methods here
}

您只需要为这个类编写一个Comparator。它应该是这样的:

代码语言:javascript
运行
AI代码解释
复制
class TableRecord {
    private Date timeStamp;

    public Date getTimeStamp() {
        return timeStamp;
    }
// other fields and methods here
}

class RecordStampDateComparator implements Comparator<TableRecord>{

    public int compare(TableRecord tr1, TableRecord tr2) {
        Date tr1Date = tr1.getTimeStamp();
        Date tr2Date = tr2.getTimeStamp();   
        return tr1Date.compareTo(tr2Date);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2013-09-23 22:50:41

只需编写抽象类Record和受保护的字段stampDate,实现可比较并覆盖compareTo方法。

代码语言:javascript
运行
AI代码解释
复制
public abstract class Record implements Comparable<Record> {
    protected Date stampDate;

    @Override
    public int compareTo(Record anotherRecord){
        return this.stampDate.compareTo(anotherRecord.stampDate);
    }
}

然后用记录类扩展这个类:

代码语言:javascript
运行
AI代码解释
复制
public class AddressRecord extends Record{
...
}

public class CityRecord extends Record{
...
}

public class UserRecord extends Record{
...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18974734

复制
相关文章
以鄱阳湖为例对土地覆被进行分类以测量萎缩的湖泊(一)
鄱阳湖是中国最大的淡水湖,但其面积随着长江三峡大坝的上游水不断被抽取而日渐收缩本案例需要比较 1984 和 2014 年之间的影像,从而量化湖泊水域面积并显示其水域面积随时间的变化情况。
陈南GISer
2021/12/08
8600
以鄱阳湖为例对土地覆被进行分类以测量萎缩的湖泊(一)
以鄱阳湖为例对土地覆被进行分类以测量萎缩的湖泊(三)
现在,将计算 1984 年和 2014 年鄱阳湖的面积(以公顷为单位)。首先,将确定适当的公式。
陈南GISer
2021/12/10
6220
以鄱阳湖为例对土地覆被进行分类以测量萎缩的湖泊(三)
以鄱阳湖为例对土地覆被进行分类以测量萎缩的湖泊(二)
在地理处理窗格中,在搜索框中输入Iso 聚类无监督分类。单击具有相同名称的结果。将打开Iso 聚类无监督分类工具。此工具对选择的影像图层或栅格运行无监督分类。它使用 Iso 聚类算法来确定像元自然分组的特征,并根据所需的类数创建输出图层。将在 1984 影像图层上运行该工具
陈南GISer
2021/12/08
1.3K0
以鄱阳湖为例对土地覆被进行分类以测量萎缩的湖泊(二)
R中实现面积图 (Area plot)
面积图是一种基于折线图的图形,可以通过图中的面积来表示数据的大小情况,比如下面两种都是面积图:
生信编程日常
2020/05/26
1.4K0
雷达图面积计算
雷达图表,也被称为蜘蛛图(玫瑰图),在数据的可视化时候,经常被用到,可以提示一个系统不同维度的得分情况,以判断该系统的完整性。(譬如个人在下面10个维度的得分,可以知道数学、英语、生物、音乐及运动等部分还需加强)
Jamesjin63
2022/11/03
1.5K0
雷达图面积计算
遥感地物覆被标签数据集
高分辨率遥感大样本标签数据集 遥感数据分类主要是依靠标签数据集,数据越多,越准确,得到的分类结果就会越精确。今天给大家分享一套数据集,包含240多万的样本数据,非常适合用作使用深度学习方法对地物覆被进行分类。 今天分享这套数据是北师大的一套数据,数据文章发表在《遥感技术与应用》上,大家有兴趣可以看一下。文章中有如何生成样本数据的具体流程方法。 文章链接为:http://www.rsta.ac.cn/CN/10.11873/j.issn.1004-0323.2019.4.0685 样本示意图 现在有很多可
GIS与遥感开发平台
2022/12/03
6570
遥感地物覆被标签数据集
用python计算圆的面积
算法与编程之美
2023/10/09
2760
用python计算圆的面积
用python计算圆面积
print(‘圆的面积为:{,2f}’.format(3.14*int(r)**2))
算法与编程之美
2023/10/25
2480
用python计算圆面积
Java——覆写(概念、覆写的意义、覆写的要求)
当子类定义了与父类中完全一样的方法时(参数名称、参数类型及个数、返回值类型),这样的操作就为方法的覆写。
Winter_world
2020/09/25
1.2K0
Java——覆写(概念、覆写的意义、覆写的要求)
GIS教程—坝区面积计算
在输入要素类时,选择下拉三角选择要素,等高点和等高线的高度字段均要选择BSGC,并得出结果
陈南GISer
2021/08/19
6780
GIS教程—坝区面积计算
数据分享|R语言PCA主成分、lasso、岭回归降维分析近年来各国土地面积变化影响
机器学习在环境监测领域的应用,着眼于探索全球范围内的环境演化规律,人类与自然生态之间的关系以及环境变化对人类生存的影响。
拓端
2023/03/08
5080
数据分享|R语言PCA主成分、lasso、岭回归降维分析近年来各国土地面积变化影响
Python项目:面积计算器
这个就不多说了,开箱即用。没有函数。 print("欢迎使用面积计算器!") print("(1)正方形 (2)长方形 (3)三角形 (4)平行四边形 (5)梯形") lx = input("请输入类型:") # 正方形 if lx == "1": print("正方形面积:边长*边长") bc = input("请输入边长:") bc = float(bc) mj = bc * bc print("面积:", mj) # 长方形 if lx == "2":
嘉嘉123
2022/12/14
1.1K0
Python项目:面积计算器
圆柱表面积公式计算器_根据体重体表面积计算公式
多面体的体积和表面积:有立方体计算公式、长方体∧棱柱∨计算公式、三棱柱计算公式、棱锥计算公式、棱台计算公式、圆柱和空心圆柱∧管∨计算公式、斜线直圆柱计算公式、直圆锥计算公式、圆台计算公式、球计算公式、球扇形∧球楔∨计算公式、球缺计算公式、圆环体∧胎∨计算公式、球带体计算公式、桶形计算公式、椭球体计算公式、交叉圆柱体计算公式、梯形体计算公式等。
全栈程序员站长
2022/09/29
1.2K0
python计算多边形面积
本文提供一个简单的方法计算多边形面积,参考维基百科 实现代码: def polygon_area(polygon): """ compute polygon area polygon: list with shape [n, 2], n is the number of polygon points """ area = 0 q = polygon[-1] for p in polygon: area += p[0] * q[1]
DoubleV
2021/12/06
1.7K0
python计算多边形面积
R语言PCA主成分、lasso、岭回归降维分析全球气候变化对各国土地面积影响
机器学习在环境监测领域的应用,着眼于探索全球范围内的环境演化规律,人类与自然生态之间的关系以及环境变化对人类生存的影响。
拓端
2023/01/31
4080
Java 覆写初探
  继承性的主要特征是子类可以根据父类已有的功能进行功能扩展,但是在子类定义属性或方法的时候有可能定义属性和方法和父类同名,在此类情况下就称为:“覆写”。
Mirror王宇阳
2020/11/13
7270
算法模板——计算几何1(图形面积)
实现功能——输入N个点,求出按此顺序围成的图形的面积 原理:其实就是个向量的叉积运算(详见UASCO-nocow:计算几何),注意二维的叉积是个很逗的东西,叉积这玩意本身就来自于三维向量 (HansBug:临睡觉了,水一发呵呵哒,额。。。phile犇不在好寂寞TT) 1 var 2 i,j,k,l,m,n:longint; 3 a:array[0..100000,1..2] of longint; 4 function surface:extended;inline; 5
HansBug
2018/04/10
6990
ArcGIS批量计算图层中矢量要素面积——ArcMap
  一次,遇到一个问题,需要计算ArcMap中一个图层的所有面要素的面积。如图,这个图层中包括多个省级行政区矢量面要素,现在需要分别计算其中每一个要素各自的面积。
疯狂学习GIS
2021/07/22
2.3K0
计算三角形的面积
3.1首先,需要知道三角形是如何根据三边的长度计算面积的。在这里,就需要知道海伦公式。
算法与编程之美
2022/02/17
4890
P4147「玉蟾宫」
有一天,小猫 rainbow 和 freda 来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地。
hotarugali
2022/03/01
2650

相似问题

R中栅格中不同土地覆被等级的面积计算

12

以公顷为单位计算R中不同土地覆被等级的面积

17

土地覆被数据集

25

根据R中两个栅格之间的土地覆被类型计算R2值?

10

R中土地面积上的选择点

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档