JAVA数组对象排序维护

最近学信息可视化这门课时用processing(其编程语言实质就是java)进行编程遇到一个问题:我需要读进来10多万条数据,每一条数据组成一个Node对象,如何从中根据某一个属性读取该最大的前100个对象。 

 关于里面涉及的排序这个问题,很自然的我们可以用到java自带的排序方法。另一个需要解决的是如何根据数组对象进行排序。


  对此,我的想法如下:先读进来前100组数据,存入对象数组中并根据其中一个属性从小大大排序,从后面开始,每次读一组数据,比较第一个数组和这个数据的大小,如果这个数据大于数组top[0],替换,在此排序,如此循环下去。 




      代码如下,用java实现,还是比较容易的


void insertIpAct(int uid, long destip, String time,long send, long recv,String tdip) {
 
       if(count<100){
          Node node= new Node(uid,destip,time,send,recv,tdip); 
          top[count]=node;
          count++;
       } else {
         Arrays.sort(top);
         Node tempnode=top[0];
         if(send>tempnode.sendSize){
            Node node1= new Node(uid,destip,time,send,recv,tdip); 
            top[0]=node1;
           
         }
      }
   return;
}




     Node类代码


class Node implements Comparable{
 
  int uid;
  long destIp;
  String accessTime;
  long sendSize;
  long recvSize;
  String dIp;
 
  
  Node(int uid,long destIp, String accessTime,long sendSize, long recvSize,String dIp){
  
   this.uid=uid;
  this.destIp=destIp;
  this.accessTime=accessTime;
  this.sendSize=sendSize;
  this.recvSize=recvSize;
  this.dIp=dIp;
  }
  
 
  
  
public int compareTo(Object object){
  Node other=(Node) object;
 if(this.sendSize==other.sendSize)
     return 0;
 if(this.sendSize>other.sendSize)
     return 1;
  return -1;
  
}
}

其实就是在这个类中implements  Comparable,并在其中重写compareTo,这样就可以直接调用java下的Arrays.sort方法了,其实就这们简单。另外

如何读入.csv文件还是比较容易实现的,所以就没有给出代码,以上只是展示了本文所要讨论的最核心的部分。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值