source: proiecte/ptvs/src/vnsim/vehicular/simulator/SortedCarVector.java @ 31

Last change on this file since 31 was 31, checked in by (none), 14 years ago
File size: 2.4 KB
Line 
1/************************************************************************************
2 * Copyright (C) 2008 by Politehnica University of Bucharest and Rutgers University
3 * All rights reserved.
4 * Refer to LICENSE for terms and conditions of use.
5 ***********************************************************************************/
6package vnsim.vehicular.simulator;
7
8import java.util.*;
9
10public class SortedCarVector implements java.io.Serializable {
11        // a sorted vector of CarInstance objects
12
13        /** <code>serialVersionUID</code> */
14        private static final long serialVersionUID = -5883719321862303634L;
15
16        private ArrayList<CarInstance> cars;
17
18        public SortedCarVector() {
19                cars = new ArrayList<CarInstance>();
20        }
21
22        public int size() {
23                return cars.size();
24        }
25
26        public CarInstance get(int i) {
27                return cars.get(i);
28        }
29
30        public CarInstance get(CarInstance ci, boolean direction) {
31                if (cars == null)
32                        return null;
33                int i = Collections.binarySearch(cars, ci);
34                if (i < 0)
35                        i = -i - 1;
36                CarInstance aux;
37                if (i == cars.size())
38                        aux = cars.get(cars.size() - 1);
39                else
40                        aux = cars.get(i);
41                if (aux.getVehicleId() == ci.ID)
42                        return aux;
43                if (direction == true) {
44                        i++;
45                        while (i < cars.size()) {
46                                aux = cars.get(i);
47                                if (aux.getVehicleId() == ci.ID)
48                                        return aux;
49                                i++;
50                        }
51                } else {
52                        i--;
53                        while (i >= 0) {
54                                aux = cars.get(i);
55                                if (aux.getVehicleId() == ci.ID)
56                                        return aux;
57                                i--;
58                        }
59                }
60                return null;
61        }
62
63        public void set(int i, CarInstance c) {
64                cars.set(i, c);
65        }
66
67        public void addCarInstance(CarInstance newCar) {
68
69                // System.out.println("I HAVE TO ADD " +newCar );
70                // int i = Collections.binarySearch(cars,newCar);
71                // assert (i < 0);
72                // i = - i - 1;
73                for (int i = 0; i < cars.size(); i++) {
74                        CarInstance c = cars.get(i);
75                        if (newCar.compareTo(c) < 0) {
76                                // insert it
77                                newCar.index = i;
78                                cars.add(i, newCar);
79                                return;
80                        }
81                }
82                newCar.index = cars.size();
83                cars.add(newCar);
84        }
85
86        public void remove(int ID) {
87                for (int i = 0; i < cars.size(); i++) {
88                        CarInstance c = cars.get(i);
89                        if (c.ID == ID) {
90                                // remove it
91                                cars.remove(i);
92                                return;
93                        }
94                }
95        }
96
97        public String toString() {
98                String ret = " [ ";
99                for (int i = 0; i < cars.size(); i++) {
100                        ret = ret + " ( " + cars.get(i) + " ) ; ";
101                }
102                ret += " ] ";
103                return ret;
104        }
105}
Note: See TracBrowser for help on using the repository browser.