System.out.println(symbol_b.symbolName + " " + symbol_b.pointsTo.size());
// change the fieldpointsTo set of all above symbols
for (int i = 0; i < samePointsTo.size(); i++)
{
for (int j = 0; j < samePointsTo.elementAt(i).size(); j++)
{
Symbol symbol = samePointsTo.elementAt(i).elementAt(j);
System.out.println(symbol.symbolName);
// if field information is already present
if (symbol.fieldPointsTo.containsKey(fieldObj))
{
symbol.fieldPointsTo.get(fieldObj).clear();
symbol.fieldPointsTo.get(fieldObj).addAll(symbol_b.pointsTo);
}
else
{
// we have to create field information
symbol.fieldPointsTo.put(fieldObj, symbol_b.pointsTo);
}
}
}
System.out.println(symbol_b.symbolName + " " + symbol_b.pointsTo.size());
forループの前のsymbol_b.pointsToのサイズは2ですが、 forループの直後にその値が2から0に変更されます。それがどのように起こっているのか、誰でも教えてくれます。symbol_b.pointsToには何もしていません。symbol_b.pointsToはベクトルです。