从对象列表中获取最小值和最大值

用户名

我有这节课

class TimeSpentStats{
  int manId;
  String sessionId;
  int userId;
  Long timeStamp;
}

我有一个列表,我想从列表中获取最小时间戳和最大时间戳(manId,sessionId,userId)

因此,例如,我有:

manId sessionId userId timeStamp

1      01F      5          1000
1      01F      5          1005
3      6Y       3           7
3      6Y       3           16

我需要(1 01F 5)->最小值= 1000,最大值= 1005,并且需要(3 6Y 3)->最小值= 7,最大值= 16

我需要在同一课程中添加2个属性吗?有什么想法可以吗?谢谢

阿希斯·耶拿(Ashis Jena)
public class Main
{
    public static void main( String[] args )
    {
        Map< TimeSpentStats, MinMax > hashMap = new HashMap< TimeSpentStats, MinMax >();
        addToMap( hashMap, new TimeSpentStats( 1, "01F", 5, 1000L ) );
        addToMap( hashMap, new TimeSpentStats( 1, "01F", 5, 1005L ) );
        addToMap( hashMap, new TimeSpentStats( 3, "6Y", 3, 7L ) );
        addToMap( hashMap, new TimeSpentStats( 3, "6Y", 3, 16L ) );

        for ( Map.Entry< TimeSpentStats, MinMax > entry : hashMap.entrySet() )
        {
            TimeSpentStats timeSpentStats = entry.getKey();
            MinMax minMax = entry.getValue();
            System.out.println( timeSpentStats.getManId() + "\t" + timeSpentStats.getSessionId() + "\t" + timeSpentStats.getUserId() + "\tMin Time Stamp :" + minMax.getMin() + "\tMax Time Stamp :" + minMax.getMax() );
        }
    }

    private static void addToMap( Map< TimeSpentStats, MinMax > hashMap, TimeSpentStats timeSpentStats )
    {
        MinMax timeStampMinMax = hashMap.get( timeSpentStats );
        if ( timeStampMinMax != null )
            timeStampMinMax.updateValues( timeSpentStats.getTimeStamp() );
        else
            hashMap.put( timeSpentStats, new MinMax( timeSpentStats.getTimeStamp() ) );
    }
}

class MinMax
{
    private Long min;
    private Long max;

    MinMax( Long timeStamp )
    {
        this.min = timeStamp;
        this.max = timeStamp;
    }

    public Long getMin()
    {
        return min;
    }

    public Long getMax()
    {
        return max;
    }

    public boolean updateValues( Long timeStamp )
    {
        if ( timeStamp < this.min )
        {
            this.min = timeStamp;
            return true;
        }
        else if ( timeStamp > this.max )
        {
            this.max = timeStamp;
            return true;
        }

        return false;
    }
}

class TimeSpentStats
{
    private final int manId;
    private final String sessionId;
    private final int userId;
    private final Long timeStamp;

    public TimeSpentStats( int manId, String sessionId, int userId, Long timeStamp )
    {
        this.manId = manId;
        this.sessionId = sessionId;
        this.userId = userId;
        this.timeStamp = timeStamp;
    }

    public int getManId()
    {
        return manId;
    }

    public String getSessionId()
    {
        return sessionId;
    }

    public int getUserId()
    {
        return userId;
    }

    public Long getTimeStamp()
    {
        return timeStamp;
    }

    @Override
    public boolean equals( Object obj )
    {
        if ( obj instanceof TimeSpentStats )
        {
            TimeSpentStats timeSpentStats = (TimeSpentStats)obj;
            return this.manId == timeSpentStats.manId && this.sessionId.equals(timeSpentStats.sessionId) && this.userId == timeSpentStats.userId;
        }
        return false;
    }

    @Override
    public int hashCode()
    {
        return sessionId.hashCode();
    }
}

编辑:修复了一个小错误。在这里我忘了使用.equals(),因为sessionId您提到的是String类型的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在列表中获取最小值和最大值

如何使用Java 8从对象列表中获取最小值和最大值

列表集合中的最小值和最大值

交换列表中的最大值和最小值

元组列表中的最小值和最大值

从 Python 中的列表列表中获取最小值和最大值的最快方法?

获取Clojure中的最大值和最小值

如何获取列中列表的最大值和最小值?

从主要包含空值的可比对象列表中获取最小值和最大值的最佳方法是什么?

Javascript:遍历对象列表并在已知最小值和最大值之间缩放值

使用列表值获取字典的最大值和最小值

查找列表的最小值和最大值

从geojson获取最大值和最小值

如何从Json获取最小值和最大值

C#从列表<对象>获取最小值,最大值和平均值

如何根据对象属性值从ArrayList中获取最小值/最大值?

在python中查找列表的最小值和最大值。我得到了 TypeError: 'int' 对象不可调用

如何一次性获取列表中成员的最小值和最大值?

在Python中查找列表的最小值,最大值

Python:比较两个列表,并用符号获取最大值和最小值

如何获取日期时间对象的最大值和最小值

Python中的列表推导,可计算列表的最小值和最大值

查找列表中每个嵌套列表的最小值和最大值

最小值和最大值

从按对象标识符分组的列表中查找最小值/最大值

数组中的Java最小值和最大值

mongodb中的最大值和最小值

系列中的最小值和最大值

列出数组中的最小值和最大值