java实现naive scaler算法(第一个版本)

package scaler.naive;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Naive1 {
    // 对实例进行排序
    @SuppressWarnings("rawtypes")
    public static Map.Entry[] getSortedHashtable(Map<String, Float> entity) {

        // 进行实例分解(把Map中的所有键值对分解为单个实例)
        Set<Entry<String, Float>> entitys = entity.entrySet();

        // 获得键值对
        Map.Entry[] entrys = entitys.toArray(new Map.Entry[entitys.size()]);

        Arrays.sort(entrys, new Comparator<Object>() {
            @Override
            public int compare(Object arg0, Object arg1) {
                Object value1 = ((Map.Entry) arg0).getValue();
                Object value2 = ((Map.Entry) arg1).getValue();
                return ((Float) value1).compareTo((Float) value2);
            }
        });

        return entrys;
    }

    // 获取断点的方法
    @SuppressWarnings("rawtypes")
    public static List<Float> getBreakPoint(Map.Entry[] entryMap) {
        float breakPoint = 0;
        List<Float> breakPoints = new ArrayList<Float>();
        for (int i = 0; i < entryMap.length - 1; i++) {
            if (entryMap[i].getValue() != entryMap[i + 1].getValue()
                    || entryMap[i].getKey() != entryMap[i + 1].getKey()) {
                breakPoint = ((Float) entryMap[i].getValue() + (Float) entryMap[i + 1]
                        .getValue()) / 2;
                breakPoints.add(breakPoint);
            }
        }
        return breakPoints;
    }

    @SuppressWarnings("rawtypes")
    public static void main(String args[]) {
        Map<String, Float> map = new HashMap<String, Float>();
        Entry[] entys;

        map.put("一", (float) 1.01);
        map.put("二", (float) 1.02);
        map.put("三", (float) 1.03);
        map.put("四", (float) 1.04);
        map.put("四", (float) 1.04);
        map.put("六", (float) 1.05);
        map.put("七", (float) 1.06);
        map.put("七", (float) 1.06);
        map.put("九", (float) 1.07);

        entys = Naive1.getSortedHashtable(map);
        for (int i = 0; i < entys.length; i++) {
            System.out.println(entys[i].getKey());
        }
        System.out.println("获得的断点:" + Naive1.getBreakPoint(entys));
    }
}

你可能感兴趣的:(java实现naive scaler算法(第一个版本))