-1
LinkedHashMap<String, Double> testMap = (LinkedHashMap<String, Double>) sortByValue(commands.get(commandWithMaxNegativeOffset).getDataUsageCriteria());

上から、値の昇順のtestMapようなものが含まれている{New=30.0, Previous=70.0}ので、私がやりたいのは、if/elseループで以下のようなものです. . key条件が一致した場合に値として設定したいby using key/value pair from map

double percent = r.nextDouble()*100;

if(percent > 1.0 && percent < 70.0(how can I use 70 from testMap instead of hardcoding)) {
//what to put below in place of Previous
    commands.get(commandWithMaxNegativeOffset).setDataCriteria(Use the Key of 70.0 i.e Previous);
} else if(percent > 71 && percent < 100){
    commands.get(commandWithMaxNegativeOffset).setDataCriteria(Use the Key of 30.0 i.e New);
}
4

2 に答える 2

1

私があなたを正しく理解しているなら、以下はあなたが探しているものかもしれません:

final LinkedHashMap<String, Double> testMap = new LinkedHashMap<String, Double>();
testMap.put("New", Double.valueOf(30.0));
testMap.put("Previous", Double.valueOf(70.0));

// The map contains two entries.
Set<Map.Entry<String, Double>> entries = testMap.entrySet();
Iterator<Map.Entry<String, Double>> it = entries.iterator();
Map.Entry<String, Double> firstEntry = it.next();
Map.Entry<String, Double> secondEntry = it.next();

Random r = new Random();
double percent = r.nextDouble() * 100;

// percent is a number between 0.0 and 100.0
if (percent < secondEntry.getValue().doubleValue()) // between 0.0 and 70.0 exclusive
{
    commands.get(commandWithMaxNegativeOffset).setDataCriteria(secondEntry.getKey());
}
else // between 70.0 inclusive to 100.0 (100.0 - 70.0 = 30.0)
{
    commands.get(commandWithMaxNegativeOffset).setDataCriteria(firstEntry.getKey());
}
于 2012-05-22T23:15:08.877 に答える
0

ただif(percent > map.get("new") && percent < map.get("previous"))?それが実際にあなたが求めているものである場合は、先に進む前に map の javadoc に立ち寄る必要があります。

于 2012-05-22T22:46:13.013 に答える