繰り返すと、最初に最小値であることがわかります。だから私はこのようなことをします:
Integer first = null;
for(Integer i : map.keySet()) {
if(first == null) first = i; // save the first value
builder.append(i - first);
}
あなたの例を使用して:
import java.util.TreeMap;
class Eggonlegs {
public static void main(String[] args) {
TreeMap<Integer,String> map = new TreeMap<Integer,String>();
map.put(14152,"First");
map.put(14153,"Second");
map.put(14159,"Third");
Integer first = null;
for(Integer i : map.keySet()) {
if(first == null) first = i; // save the first value
System.out.println(i - first);
}
}
}
結果は
c:\files>javac Eggonlegs.java
c:\files>java Eggonlegs
0
1
7
c:\files>
さて、それはあなたが意図したものではない可能性があります。おそらく、各ノード間の違いが必要ですが、これは例が示しているものではありません。その場合、次のようにコレクションライブラリを活用します。
List<Integer> list = new ArrayList<Integer>(map.keySet());
for(int i = 0; i < list.size(); i++) {
if(i == 0) builder.append(0);
else builder.append(list.get(i) - list.get(i-1));
}
これは、oyuが実際に意図したものである場合の例です。
import java.util.ArrayList;
import java.util.List;
import java.util.TreeMap;
class Eggonlegs {
public static void main(String[] args) {
TreeMap<Integer,String> map = new TreeMap<Integer,String>();
map.put(14152,"First");
map.put(14153,"Second");
map.put(14159,"Third");
List<Integer> list = new ArrayList<Integer>(map.keySet());
for(int i = 0; i < list.size(); i++) {
if(i == 0) System.out.println(0);
else System.out.println(list.get(i) - list.get(i-1));
}
}
}
結果は
c:\files>javac Eggonlegs.java
c:\files>java Eggonlegs
0
1
6
c:\files>