java list<实体> 集合排序问题 根据实体的 time属性,降序排列(距离现在时间越短,越靠前)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java list<实体> 集合排序问题 根据实体的 time属性,降序排列(距离现在时间越短,越靠前)相关的知识,希望对你有一定的参考价值。

请贴出代码,谢谢~
假如有一实体 student 属性: name 姓名;time 时间
List<student> ls;
请根据,实体 time属性排序~
time 为 java.util.date类型

其实就像二楼说的那样 用数据库最简单了
java的话

String pat1 = "yyyy-MM-dd" ;
String datetime = "2001-02-02";
SimpleDateFormat sdf1 = new SimpleDateFormat(pat1) ;
Date d3 = sdf1.parse(datetime);
long l =d3.getTime();
System.out.println(l);
这个可以把时间转换成数字. 然后比较数据就行了.....
参考技术A Date实例方法getTime(); 获取一个long型数据,越大的时间越往后
for(int i=0;i<ls.size();i++)
Student s =(Student)ls.get(i);
long = time = s.getTime().getTime(); //这里我没用你的属性time,实体应该封装get/set方法了。


最好的方法是自定义比较器,只是看你问的问题应该还是初学者,就先用上面简单好理解的代码吧
参考技术B MyComparator myComparator = new MyComparator();
Collections.sort(mList, myComparator);
public static class MyComparator implements Comparator<Student>

@Override
public int compare(Student o1, Student o2)

return o1.getTime().compareTo(o2.getTime());

参考技术C 例如 select * from student where time desc 不知道对不

JavaArrayList集合操作?

Java中list集合中存在某些字段相同的实体类,把那些指定字段相同的实体类合成一条,并且其中累加,该怎么操作,各位大佬😭😭

假设需要合并的实体类是一个Java类,包含了多个字段,其中需要合并的字段名为"fieldName",那么可以按照以下步骤进行操作:

    定义一个Map,用于存储合并后的实体类,其中Key为"fieldName"的值,Value为合并后的实体类。

Map<Object, YourEntityClass> resultMap = new HashMap<>();

    遍历List集合,对于每一个实体类,根据"fieldName"的值从Map中获取已经合并的实体类,如果不存在,则将当前实体类添加到Map中;如果存在,则将当前实体类的相应字段累加到已经存在的实体类中。

    for (YourEntityClass entity : yourList)

    Object key = entity.getFieldName();

    if (resultMap.containsKey(key))

    YourEntityClass existingEntity = resultMap.get(key);

    // 累加相应字段

    existingEntity.setSomeField(existingEntity.getSomeField() + entity.getSomeField());

    else

    resultMap.put(key, entity);

    最终,将合并后的实体类从Map中取出来,组成一个新的List返回。

List<YourEntityClass> result = new ArrayList<>(resultMap.values());

这样,就可以实现根据某个字段值合并实体类并累加相应字段的操作。

参考技术A

可以使用Java8的Stream API来实现将指定字段相同的实体类合并,并累加操作。具体实现步骤如下:

    定义一个Map,用于存储指定字段相同的实体类;

    遍历list集合中的每一个实体类,根据指定字段的值作为Map的key,将相同key的实体类放到同一个List中;

    对每一个List中的实体类进行累加操作,并将结果更新到第一个实体类上;

    将Map中的实体类转换成List返回。

    示例代码如下:

import java.util.*;

import java.util.stream.Collectors;

public class Entity

private String field1;

private int field2;

public Entity(String field1, int field2)

this.field1 = field1;

this.field2 = field2;

public String getField1()

return field1;

public void setField1(String field1)

this.field1 = field1;

public int getField2()

return field2;

public void setField2(int field2)

this.field2 = field2;

public class Main

public static void main(String[] args)

List<Entity> list = new ArrayList<>();

list.add(new Entity("A", 1));

list.add(new Entity("B", 2));

list.add(new Entity("A", 2));

list.add(new Entity("B", 3));

Map<String, List<Entity>> map = list.stream()

.collect(Collectors.groupingBy(Entity::getField1));

List<Entity> result = new ArrayList<>();

for (List<Entity> entities : map.values())

Entity first = entities.get(0);

for (int i = 1; i < entities.size(); i++)

Entity entity = entities.get(i);

first.setField2(first.getField2() + entity.getField2());

result.add(first);

System.out.println(result);

上述代码中的Entity类表示实体类,包含两个字段:field1和field2。Main类中的main方法演示了如何将指定字段相同的实体类合并,并且将相同字段的field2值累加。运行该程序将输出以下结果:

[Entityfield1='A', field2=3, Entityfield1='B', field2=5]

其中,输出结果表示将list中的指定字段相同的实体类合并之后的结果。

参考技术B public List<Entity> mergeList(List<Entity> list)
Map<String, Entity> map = new HashMap<>();
for (Entity entity : list)
String key = entity.getSpecifiedField(); // 获取指定字段的值作为key
Entity existEntity = map.get(key);
if (existEntity != null) // 如果存在相同的key,则将实体类对象累加
existEntity.setNum(existEntity.getNum() + entity.getNum());
existEntity.setAmount(existEntity.getAmount() + entity.getAmount());
else
map.put(key, entity); // 如果不存在相同的key,则将实体类对象放入Map中


return new ArrayList<>(map.values());
本回答被提问者采纳

以上是关于java list<实体> 集合排序问题 根据实体的 time属性,降序排列(距离现在时间越短,越靠前)的主要内容,如果未能解决你的问题,请参考以下文章

java List<T>排序

java中两个list集合如何排序

java对存放实体的list进行排序

java List集合如何使用两个实体类中的参数方法?

JavaArrayList集合操作?

Set集合转化List集合