@SuppressWarnings("unchecked")
    public void setProfile() {
        ArrayList<Short> values = new ArrayList<Short>();
        ArrayList<Integer> itemsContainingValue = new ArrayList<Integer>();
        double pop, like, denLike, meanRatingVal;
        long before = System.currentTimeMillis();
        for (int i = 0; i < 3; i++) { // for each attr
            getAttrValues(i, values);
            Utils.sumUniqueVals[i] += values.size();
            profile[i] = new Vector<Double>();
            attrVals[i] = new ArrayList<Short>();
            denLike = calculateDenLike(values, i); // calculate one time the denominator of like
            for (Short value : values) { // for each value of attr
                meanRatingVal = getItemsValAttr(value, i, itemsContainingValue);
                // calculate pop
                pop = (double) itemsContainingValue.size() / trainingSet.size();
                // calculate like
                like = meanRatingVal / denLike;
                // calculate doi and add it in vector
                profile[i].add(2 * pop * like / (like + pop));
                attrVals[i].add(value);
                itemsContainingValue.clear();
            }
            values.clear();
        }
        // define in which team the user belongs
        // based on the number of items in his training set
        long after = System.currentTimeMillis();
        switch (team) {
            case 'A':
                Utils.timeTeam[0] += (after - before);
                break;
            case 'B':
                Utils.timeTeam[1] += (after - before);
                break;
            case 'C':
                Utils.timeTeam[2] += (after - before);
                break;
            case 'D':
                Utils.timeTeam[3] += (after - before);
                break;
            case 'v':
                // do nothing
                break;
            default:
                // will never execute
                break;
        }
        // cleaning the house
        values = null;
        itemsContainingValue = null;
    }