两个for循环需要花费大量时间来执行任何解决方案以减少时间JAVA

时间:2017-05-31 16:46:34

标签: java

这是我在java中的数据,如果数据很大,那么处理和获取响应会花费大量时间如何优化此代码以获得快速操作

List<EventLog> eventLogs = new ArrayList<EventLog>();
List<EventLog> eventLogData = get(currentUser, data);
Map<String, Integer> map = new HashMap<String, Integer>();

for (EventLog rep : eventLogData) {
    if (map.containsKey(rep.getEventType())) {
    map.put(rep.getEventType(), map.get(rep.getEventType()) + 1);
    } else {
    map.put(rep.getEventType(), 1);
    }
}

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    EventLog list = new EventLog();
    list.setEventType(entry.getKey());
    list.setCount(entry.getValue());
    eventLogs.add(list);
}

return eventLogs;

2 个答案:

答案 0 :(得分:0)

您是否考虑过使用其他高性能收藏库? 这是我的实现,使用Trove库。它提供了更快的执行,因为

  1. 地图更新需要单一访问(adjustOrPutValue)而不是原始实现中的两个(containsKey和get)
  2. 它处理原始int而不是Integer,并且避免所有装箱和拆箱操作,并且消耗更少的内存
  3. <?php  ?>

答案 1 :(得分:-6)

在一个循环中修改您的代码,您可以使用而不是.from("ftp://test@localhost:21/?password=test").to("file://d:\\test") 循环使用foreach来获取列表的大小:

list.size()