private Map<Integer, List<ApSet>> createApSetsByFingerprintId() {
		Map<Integer, List<ApSet>> fingerprintsMap = new TreeMap<Integer, List<ApSet>>();
		for (ApSet apSet : apSets) {
			if (fingerprintsMap.get(apSet.getFingerprintId()) == null) {
				fingerprintsMap.put(apSet.getFingerprintId(),
						new ArrayList<ApSet>());
			}
			fingerprintsMap.get(apSet.getFingerprintId()).add(apSet);
		}
		return fingerprintsMap;
	}
	private List<ApSet> createAllApSetsFromExternalFile() throws IOException {
		List<ApSet> result = new ArrayList<ApSet>();
		String fileName = "ap_set.csv";
		InputStream is = context.getAssets().open(fileName);
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		String readStr;

		br.readLine(); // 첫 줄 버림.
		while ((readStr = br.readLine()) != null) {
			String[] tokens = readStr.split(delimiter);
			ApSet apSet = new ApSet();
			apSet.setFingerprintId(Integer.parseInt(tokens[0]));
			apSet.setApId(Integer.parseInt(tokens[1]));
			apSet.setSignalStrength(Integer.parseInt(tokens[2]));
			result.add(apSet);
		}
		return result;
	}
	private void createRepresentativeFingerprintAndApSet() throws IOException {
		Map<String, Fingerprint> newFingerprintByCoordinateMap = new HashMap<String, Fingerprint>();
		List<ApSet> newApSets = new ArrayList<ApSet>();
		Map<Integer, List<ApSet>> newApSetsByFingerprintIdMap = new TreeMap<Integer, List<ApSet>>();

		int fingerprintId = 1;
		Fingerprint f;
		Timestamp time;
		Double x;
		Double y;
		Double z;

		for (String coordinate : fingerprintsByCoordinateMap.keySet()) {
			f = fingerprintsByCoordinateMap.get(coordinate).get(0);
			time = f.getTime();
			x = f.getX();
			y = f.getY();
			z = f.getZ();

			Map<Integer, List<Integer>> signalsByApId = new TreeMap<Integer, List<Integer>>();
			for (Fingerprint fingerprint : fingerprintsByCoordinateMap
					.get(coordinate)) {

				List<ApSet> apSets = apSetsByFingerprintIdMap.get(fingerprint
						.getId());
				if (apSets == null) {
					continue;
				}
				for (ApSet apSet : apSets) {
					if (signalsByApId.get(apSet.getApId()) == null) {
						signalsByApId.put(apSet.getApId(),
								new ArrayList<Integer>());
					}
					signalsByApId.get(apSet.getApId()).add(
							apSet.getSignalStrength());
				}
			}

			List<ApSet> representiveApSet = new ArrayList<ApSet>();
			for (Integer apId : signalsByApId.keySet()) {
				Integer avgSignalStrength = 0;
				for (Integer signalStrength : signalsByApId.get(apId)) {
					avgSignalStrength = avgSignalStrength + signalStrength;
				}
				avgSignalStrength = (int) ((double) avgSignalStrength / (double) signalsByApId
						.get(apId).size());
				representiveApSet.add(new ApSet(fingerprintId, apId,
						avgSignalStrength));
			}
			newApSets.addAll(representiveApSet);
			Fingerprint representiveFingerprint = new Fingerprint(
					fingerprintId, time, x, y, z);
			this.fingerprints.add(representiveFingerprint);
			this.fingerprintByFingerprintIdMap.put(fingerprintId,
					representiveFingerprint);
			newFingerprintByCoordinateMap.put(coordinate,
					representiveFingerprint);
			newApSetsByFingerprintIdMap.put(fingerprintId, representiveApSet);
			fingerprintId++;
		}

		this.apSets = newApSets;
		this.representativeFingerprintByCoordinateMap = newFingerprintByCoordinateMap;
		this.apSetsByFingerprintIdMap = newApSetsByFingerprintIdMap;
	}