Use addAll where possible (findbugs).

This commit is contained in:
Mike Pope 2019-03-11 17:00:23 +10:30
parent 97c22df293
commit e6a30e548b
8 changed files with 43 additions and 23 deletions

View File

@ -748,10 +748,8 @@ public final class InGameController extends FreeColClientHolder {
}
}
if (!messages.isEmpty()) {
for (ModelMessage m : messages) {
player.addModelMessage(m);
turnReportMessages.add(m);
}
turnReportMessages.addAll(messages);
for (ModelMessage m : messages) player.addModelMessage(m);
displayModelMessages(false, false);
fail = true;
}

View File

@ -781,7 +781,7 @@ public final class Canvas extends JDesktopPane {
List<Component> allComponents
= transform(this.getComponents(),
c -> !(c instanceof GrayLayer) && c.isValid());
for (FreeColDialog<?> fcd : dialogs) allComponents.add(fcd);
allComponents.addAll(dialogs);
// Find the position with the least overlap
int bestScore = Integer.MAX_VALUE;

View File

@ -818,7 +818,21 @@ public class Map extends FreeColGameObject implements Location {
* @param predicate The <code>Predicate</code> to check.
* @return A {@code List} of all matching {@code Tile}s.
*/
public List<Tile> getTiles(Predicate<Tile> predicate) {
public Set<Tile> getTileSet(Predicate<Tile> predicate) {
Set<Tile> ret = new HashSet<>();
for (Tile t : this.tileList) {
if (predicate.test(t)) ret.add(t);
}
return ret;
}
/**
* Get a list of all the tiles that match a predicate.
*
* @param predicate The <code>Predicate</code> to check.
* @return A {@code List} of all matching {@code Tile}s.
*/
public List<Tile> getTileList(Predicate<Tile> predicate) {
List<Tile> ret = new ArrayList<>();
for (Tile t : this.tileList) {
if (predicate.test(t)) ret.add(t);
@ -915,6 +929,18 @@ public class Map extends FreeColGameObject implements Location {
return ret;
}
/**
* Get a shuffled list of all the tiles.
*
* @param random A pseudo-random number source.
* @return A shuffled list of all the {@code Tile}s in this map.
*/
public List<Tile> getShuffledTiles(Random random) {
List<Tile> ret = new ArrayList<>(this.tileList);
randomShuffle(logger, "All tile shuffle", ret, random);
return ret;
}
/**
* An iterator returning positions in a spiral starting at a given
* center tile. The center tile is never included in the returned

View File

@ -438,15 +438,15 @@ public class Region extends FreeColGameObject implements Nameable {
this.discoveredIn = turn;
this.discoverable = false;
List<Region> discov = transform(getChildren(), Region::getDiscoverable);
List<Region> result = new ArrayList<>(discov.size()+1);
result.add(this);
for (Region r : discov) {
r.discoveredBy = player;
r.discoverer = unit.getId();
r.discoveredIn = turn;
r.discoverable = false;
result.add(r);
}
List<Region> result = new ArrayList<>(discov.size()+1);
result.add(this);
result.addAll(discov);
return result;
}

View File

@ -242,7 +242,7 @@ public class SimpleMapGenerator implements MapGenerator {
}
// Make new settlements.
List<Tile> iTiles = importMap.getTiles(isNotNull(Tile::getIndianSettlement));
List<Tile> iTiles = importMap.getTileList(isNotNull(Tile::getIndianSettlement));
Set<IndianSettlement> newSettlements = new HashSet<>(iTiles.size());
for (Tile iTile : iTiles) {
final IndianSettlement is = iTile.getIndianSettlement();
@ -391,8 +391,7 @@ public class SimpleMapGenerator implements MapGenerator {
// order picking out as many as possible suitable tiles for
// native settlements such that can be guaranteed at least one
// layer of surrounding tiles to own.
List<Tile> allTiles = map.getTiles(alwaysTrue());
randomShuffle(logger, "All tile shuffle", allTiles, random);
List<Tile> allTiles = map.getShuffledTiles(random);
final int minDistance = spec.getRange(GameOptions.SETTLEMENT_NUMBER);
List<Tile> settlementTiles = new ArrayList<>();
for (Tile tile : allTiles) {

View File

@ -667,17 +667,17 @@ public class ServerPlayer extends Player implements TurnTaker {
cs.add(See.only(this), tiles);
// Remove settlements. Update formerly owned tiles.
tiles.clear();
List<Settlement> settlements = getSettlementList();
while (!settlements.isEmpty()) {
csDisposeSettlement(settlements.remove(0), cs);
}
// Clean up remaining tile ownerships
for (Tile t : game.getMap().getTiles(matchKeyEquals(this, Tile::getOwner))) {
tiles.clear();
tiles.addAll(game.getMap().getTileList(matchKeyEquals(this, Tile::getOwner)));
for (Tile t : tiles) {
t.cacheUnseen();//+til
t.changeOwnership(null, null);//-til
tiles.add(t);
}
// Remove units
@ -973,19 +973,17 @@ public class ServerPlayer extends Player implements TurnTaker {
* @return A list of tiles whose visibility changed.
*/
public Set<Tile> exploreMap(final boolean reveal) {
List<Tile> tiles = getGame().getMap()
.getTiles(t -> this.hasExplored(t) != reveal);
Set<Tile> result = new HashSet<>(tiles.size());
Set<Tile> tiles = getGame().getMap()
.getTileSet(t -> this.hasExplored(t) != reveal);
for (Tile t : tiles) {
t.setExplored(this, reveal);//-vis(this)
result.add(t);
}
invalidateCanSeeTiles();//+vis(this)
if (!reveal) {
for (Settlement s : getSettlementList()) exploreForSettlement(s);
for (Unit u : getUnitSet()) exploreForUnit(u);
}
return result;
return tiles;
}
/**

View File

@ -186,7 +186,7 @@ public class MapTest extends FreeColTestCase {
});
int i = 0;
for (Tile t : map.getTiles(alwaysTrue())) {
for (Tile t : map.getTileList(alwaysTrue())) {
i++;
assertTrue(allTiles.remove(t));
}

View File

@ -41,7 +41,6 @@ import net.sf.freecol.common.model.Specification;
import net.sf.freecol.common.model.Tile;
import net.sf.freecol.common.model.Turn;
import net.sf.freecol.common.option.MapGeneratorOptions;
import static net.sf.freecol.common.util.CollectionUtils.*;
import net.sf.freecol.common.util.LogBuilder;
import net.sf.freecol.server.FreeColServer;
import net.sf.freecol.server.model.ServerGame;
@ -136,7 +135,7 @@ public class MapGeneratorTest extends FreeColTestCase {
// Sufficient land?
int total = m.getWidth() * m.getHeight();
int land = count(m.getTiles(Tile::isLand));
int land = m.getTileSet(Tile::isLand).size();
// Land Mass requirement fulfilled?
assertTrue(100 * land / total >= g.getMapGeneratorOptions()
.getInteger(MapGeneratorOptions.LAND_MASS));