Example usage for com.google.common.collect ArrayListMultimap create

List of usage examples for com.google.common.collect ArrayListMultimap create

Introduction

In this page you can find the example usage for com.google.common.collect ArrayListMultimap create.

Prototype

public static <K, V> ArrayListMultimap<K, V> create(int expectedKeys, int expectedValuesPerKey) 

Source Link

Document

Constructs an empty ArrayListMultimap with enough capacity to hold the specified numbers of keys and values without resizing.

Usage

From source file:org.apache.giraph.edge.HashMultimapEdges.java

/**
 * Additional initialization method tailored to the underlying multimap
 * implementation.//from   ww w .j  a  v  a  2  s .  c  o  m
 *
 * @param expectedNeighbors Expected number of unique neighbors
 * @param expectedEdgesPerNeighbor Expected number of edges per neighbor
 */
public void initialize(int expectedNeighbors, int expectedEdgesPerNeighbor) {
    edgeMultimap = ArrayListMultimap.create(expectedNeighbors, expectedEdgesPerNeighbor);
}

From source file:bzh.plantkelt.motscroises.Dictionnary.java

public Dictionnary(String filename, int maxWordLen) {
    if (maxWordLen >= MAX_LETTER_COUNT_IN_PATTERN.length)
        throw new IllegalArgumentException(
                "maxWordLen is too large, maximum is " + MAX_LETTER_COUNT_IN_PATTERN.length);

    // Load words
    Logger.error("Loading dictionnary '" + filename + "'...");
    words = new HashSet<>(500000);
    try {//from  w w w . j  a  v  a2  s  . c  om
        Files.lines(Paths.get(filename)).forEach((line) -> {
            String word = stripAccents(line).toUpperCase().replaceAll("-", "");
            int len = word.length();
            if (isAlpha(word) && len > 1 && len <= maxWordLen) {
                words.add(word);
            }
        });
    } catch (IOException e) {
        throw new IllegalArgumentException(e);
    }
    Logger.error("Loaded " + words.size() + " words.");

    // Index words
    Logger.error("Indexing words...");
    patterns = ArrayListMultimap.create(100000, 10);
    alphabetFrequencies = new AlphabetFreq();
    lengthFrequencies = new long[maxWordLen + 1];
    for (int i = 0; i < maxWordLen + 1; i++) {
        lengthFrequencies[i] = 0;
    }
    int n = 0;
    for (String word : words) {
        int len = word.length();
        totalLetterCount += len;
        int maxLetters = MAX_LETTER_COUNT_IN_PATTERN[len];
        lengthFrequencies[len]++;
        char[] wordLetters = word.toCharArray();
        char[] pattern = new char[len];
        for (int i = 0; i < len; i++) {
            pattern[i] = '_';
        }

        // 1-char pattern & letter frequencies
        for (int i = 0; i < len; i++) {
            char letter = wordLetters[i];
            alphabetFrequencies.inc(letter);
            pattern[i] = letter;
            patterns.put(new String(pattern), word);
            pattern[i] = '_';
        }

        if (maxLetters >= 2) {
            // 2-chars pattern
            for (int i = 0; i < len; i++) {
                pattern[i] = wordLetters[i];
                for (int j = i + 1; j < len; j++) {
                    pattern[j] = wordLetters[j];
                    patterns.put(new String(pattern), word);
                    pattern[j] = '_';
                }
                pattern[i] = '_';
            }
        }

        if (maxLetters >= 3) {
            // 3-chars pattern
            for (int i = 0; i < len; i++) {
                pattern[i] = wordLetters[i];
                for (int j = i + 1; j < len; j++) {
                    pattern[j] = wordLetters[j];
                    for (int k = j + 1; k < len; k++) {
                        pattern[k] = wordLetters[k];
                        patterns.put(new String(pattern), word);
                        pattern[k] = '_';
                    }
                    pattern[j] = '_';
                }
                pattern[i] = '_';
            }
        }

        if (maxLetters >= 4) {
            // 4-chars pattern
            for (int i = 0; i < len; i++) {
                pattern[i] = wordLetters[i];
                for (int j = i + 1; j < len; j++) {
                    pattern[j] = wordLetters[j];
                    for (int k = j + 1; k < len; k++) {
                        pattern[k] = wordLetters[k];
                        for (int l = k + 1; l < len; l++) {
                            pattern[l] = wordLetters[l];
                            patterns.put(new String(pattern), word);
                            pattern[l] = '_';
                        }
                        pattern[k] = '_';
                    }
                    pattern[j] = '_';
                }
                pattern[i] = '_';
            }
        }

        if (maxLetters >= 5)
            throw new IllegalArgumentException("Too many max letters in pattern, max 4.");

        n++;
        if (n % 100000 == 0)
            Logger.warn(n + " words indexed");
    }

}

From source file:com.yahoo.yqlplus.engine.internal.java.sequences.Sequences.java

public static <ROW, LEFT, RIGHT, KEY> List<ROW> doJoin(boolean inner, List<LEFT> left, List<RIGHT> right,
        List<KEY> leftKeys, Function<RIGHT, KEY> rightKey, JoinEmit<ROW, LEFT, RIGHT> output) {
    List<ROW> result = Lists.newArrayList();
    Multimap<KEY, RIGHT> rights = ArrayListMultimap.create(leftKeys.size(), 4);
    for (RIGHT row : right) {
        rights.put(rightKey.apply(row), row);
    }//from  www .ja va 2  s . co m
    for (int i = 0; i < left.size(); ++i) {
        LEFT leftRow = left.get(i);
        KEY leftKey = leftKeys.get(i);
        Collection<RIGHT> match = rights.get(leftKey);
        if (match == null || match.isEmpty()) {
            if (!inner) {
                ROW row = output.create();
                output.setLeft(row, leftRow);
                result.add(row);
            }
            continue;
        }
        for (RIGHT rightRow : match) {
            ROW row = output.create();
            output.setLeft(row, leftRow);
            output.setRight(row, rightRow);
            result.add(row);
        }
    }
    return result;
}

From source file:eu.lp0.cursus.scoring.scores.impl.GenericRaceLapsData.java

@Override
protected List<Pilot> calculateRaceLapsInOrder(Race race, Map<Pilot, Integer> laps) {
    ListMultimap<Integer, Pilot> raceOrder = ArrayListMultimap.create(EXPECTED_MAXIMUM_LAPS,
            scores.getPilots().size());//w w  w . j  a va  2 s. co m

    extractRaceLaps(race, laps, raceOrder, null);

    // Get penalties for each pilot
    ListMultimap<Pilot, Penalty> cancelLaps = ArrayListMultimap.create(EXPECTED_MAXIMUM_PENALTIES,
            scores.getPilots().size());
    ListMultimap<Pilot, Penalty> adjustLaps = ArrayListMultimap.create(EXPECTED_MAXIMUM_PENALTIES,
            scores.getPilots().size());
    for (RaceAttendee attendee : Maps.filterKeys(race.getAttendees(), Predicates.in(scores.getPilots()))
            .values()) {
        for (Penalty penalty : Iterables.concat(Ordering.natural().immutableSortedCopy(attendee.getPenalties()),
                scores.getSimulatedRacePenalties(attendee.getPilot(), race))) {
            if (penalty.getValue() != 0) {
                switch (penalty.getType()) {
                case CANCEL_LAPS:
                    cancelLaps.put(attendee.getPilot(), penalty);
                    break;

                case ADJUST_LAPS:
                    adjustLaps.put(attendee.getPilot(), penalty);
                    break;

                default:
                    break;
                }
            }
        }
    }

    // Apply lap cancellation penalties
    if (!cancelLaps.isEmpty()) {
        final Multiset<Pilot> pilotLaps = HashMultiset.create(laps.size());

        for (Map.Entry<Pilot, Integer> pilotLapCount : laps.entrySet()) {
            pilotLaps.setCount(pilotLapCount.getKey(), pilotLapCount.getValue());
        }

        for (Map.Entry<Pilot, Penalty> entry : cancelLaps.entries()) {
            int value = entry.getValue().getValue();
            if (value > 0) {
                pilotLaps.remove(entry.getKey(), value);
            } else {
                pilotLaps.add(entry.getKey(), Math.abs(value));
            }
        }

        extractRaceLaps(race, laps, raceOrder, new Predicate<Pilot>() {
            @Override
            public boolean apply(@Nullable Pilot pilot) {
                return pilotLaps.remove(pilot);
            }
        });
    }

    // Save pilot order
    List<Pilot> origPilotOrder = getPilotOrder(raceOrder);
    SortedSet<Pilot> noLaps = new TreeSet<Pilot>(new PilotRaceNumberComparator());
    Set<Integer> changed = new HashSet<Integer>();

    // It is intentional that pilots can end up having 0 laps but be considered to have completed the race
    for (Map.Entry<Pilot, Penalty> entry : adjustLaps.entries()) {
        Pilot pilot = entry.getKey();
        int lapCount = laps.get(pilot);

        raceOrder.remove(lapCount, pilot);
        changed.add(lapCount);

        lapCount += entry.getValue().getValue();
        if (lapCount <= 0) {
            lapCount = 0;
            noLaps.add(pilot);
        }
        laps.put(pilot, lapCount);

        raceOrder.put(lapCount, pilot);
        changed.add(lapCount);
    }

    // Apply original pilot order
    if (!changed.isEmpty()) {
        origPilotOrder.addAll(noLaps);

        for (Integer lapCount : changed) {
            raceOrder.replaceValues(lapCount,
                    Ordering.explicit(origPilotOrder).immutableSortedCopy(raceOrder.get(lapCount)));
        }

        return getPilotOrder(raceOrder);
    } else {
        return origPilotOrder;
    }
}

From source file:com.young.util.jni.generator.NativeProxyCodeGenerator.java

public NativeProxyCodeGenerator(Environment env, TypeElement clazz) {
    super(env, clazz);
    mConstructors = new LinkedList<>();
    mMethods = ArrayListMultimap.create(16, 16);
    mFields = ArrayListMultimap.create(16, 16);
    mConsts = new HashSet<>();

    NativeProxy annotation = clazz.getAnnotation(NativeProxy.class);
    if (annotation == null) {
        annotation = AnnotationResolver.getDefaultImplementation(NativeProxy.class);
    }/*from   w w w  .jav a  2s .c o  m*/
    mNativeProxyAnnotation = annotation;

    mFileName = getCppClassName() + ".hpp";
}

From source file:org.polymap.wbv.ui.reports.Report106c.java

@Override
public JasperReportBuilder build() throws DRException, JRException, IOException {
    List<Gemarkung> gemarkungen = new ArrayList(256);
    final ListMultimap<String, Flurstueck> gemarkung2Flurstuecke = ArrayListMultimap.create(256, 100);
    final Map<Integer, String> flurstuecke2Art = new HashMap(4096);

    for (Waldbesitzer wb : revierWaldbesitzer()) {
        for (Flurstueck flurstueck : wb.flurstuecke(revier.get())) {
            Gemarkung gemarkung = flurstueck.gemarkung.get();
            if (gemarkung != null) {
                gemarkungen.add(gemarkung);
                gemarkung2Flurstuecke.put((String) gemarkung.id(), flurstueck);
            }/*  w  w w.j  ava  2 s  .  com*/
            flurstuecke2Art.put(flurstueck.hashCode(), getArt(wb.eigentumsArt.get()));
        }
    }

    final List<String> arten = new ArrayList<String>();
    arten.add("LW");
    arten.add("BW");
    arten.add("KiW4_2");
    // TODO
    // arten.add("KiW\nnach 4/3");
    arten.add("PW");
    arten.add("TW");
    arten.add("Kow_KoeW");
    arten.add("ohne_ea");

    Map<String, String> artenLabels = new HashMap<String, String>();
    artenLabels.put("LW", "LW");
    artenLabels.put("BW", "BW");
    artenLabels.put("KiW4_2", "KiW\nnach 4/2");
    // TODO
    // artenLabels.put("KiW\nnach 4/3");
    artenLabels.put("PW", "PW");
    artenLabels.put("TW", "TW");
    artenLabels.put("Kow_KoeW", "Kow/KW");
    artenLabels.put("ohne_ea", "ohne EA");

    // datasource
    JsonBuilder jsonBuilder = new JsonBuilder(gemarkungen) {
        @Override
        protected Object buildJson(Object value) {
            Object result = super.buildJson(value);
            //
            if (value instanceof Gemarkung) {
                Gemarkung gemarkungObj = (Gemarkung) value;
                JSONObject resultObj = (JSONObject) result;
                resultObj.put("gemeinde", gemarkungObj.gemeinde.get());
                resultObj.put("gemarkung", gemarkungObj.gemarkung.get());

                double totalSum = 0d, sum = 0d;
                for (Flurstueck f : gemarkung2Flurstuecke.get((String) gemarkungObj.id())) {
                    if (flurstuecke2Art.get(f.hashCode()) == null) {
                        sum += f.flaecheWald.get();
                    }
                }
                resultObj.put("ohne_ea", sum);
                for (String art : arten) {
                    sum = 0d;
                    for (Flurstueck f : gemarkung2Flurstuecke.get((String) gemarkungObj.id())) {
                        if (flurstuecke2Art.get(f.hashCode()).equals(art)) {
                            sum += f.flaecheWald.get();
                        }
                    }
                    resultObj.put(art, sum);
                    totalSum += sum;
                }
                resultObj.put("gesamt", totalSum);
            }
            return result;
        }
    };

    // report
    TextColumnBuilder<String> gemeindeColumn = col.column("Gemeinde", "gemeinde", type.stringType());
    TextColumnBuilder<String> gemarkungColumn = col.column("Gemarkung", "gemarkung", type.stringType());

    List<TextColumnBuilder<Double>> flaecheColumns = new ArrayList<TextColumnBuilder<Double>>();
    TextColumnBuilder<Double> flaecheColumn;
    for (String art : arten) {
        flaecheColumn = col.column(artenLabels.get(art), art, type.doubleType())
                .setValueFormatter(new NumberFormatter(1, 2, 100, 2));
        flaecheColumns.add(flaecheColumn);
    }
    TextColumnBuilder<Double> sumColumn = col.column("Summe", "gesamt", type.doubleType())
            .setValueFormatter(new NumberFormatter(1, 2, 100, 2));

    ReportTemplateBuilder templateBuilder = template();
    templateBuilder.setGroupShowColumnHeaderAndFooter(false);
    templateBuilder.setGroupHeaderLayout(GroupHeaderLayout.VALUE);
    templateBuilder.setSubtotalLabelPosition(Position.BOTTOM);
    templateBuilder.setSubtotalStyle(stl.style().setTopBorder(stl.pen1Point()));
    templateBuilder
            .setGroupStyle(stl.style(stl.style().bold()).setHorizontalAlignment(HorizontalAlignment.LEFT));
    templateBuilder
            .setGroupTitleStyle(stl.style(stl.style().bold()).setHorizontalAlignment(HorizontalAlignment.LEFT));

    JasperReportBuilder report = report().setTemplate(templateBuilder)
            .setDataSource(new JsonDataSource(jsonBuilder.run()))

            .setPageFormat(PageType.A4, PageOrientation.LANDSCAPE)
            .title(cmp.text("Flchenverzeichnis nach Gemarkung und EA").setStyle(titleStyle),
                    cmp.text("Basis: Waldflche der Waldbesitzer").setStyle(headerStyle),
                    cmp.text("Forstbezirk: Mittelsachsen").setStyle(headerStyle),
                    cmp.text("Revier: " + getRevier() /*+ " / Abfrage: \"" + getQuery() + "\""*/ )
                            .setStyle(headerStyle),
                    cmp.text(df.format(new Date())).setStyle(headerStyle), cmp.text("").setStyle(headerStyle))
            .pageFooter(cmp.pageXofY().setStyle(footerStyle))
            // number of page
            .setDetailOddRowStyle(highlightRowStyle).setColumnTitleStyle(columnTitleStyle)
            .sortBy(gemeindeColumn, gemarkungColumn);

    report.addColumn(gemeindeColumn);
    report.addColumn(gemarkungColumn);
    for (@SuppressWarnings("hiding")
    TextColumnBuilder<Double> col : flaecheColumns) {
        report.addColumn(col);
    }
    report.addColumn(sumColumn);
    return report;
}

From source file:eu.esdihumboldt.hale.ui.functions.core.CheckboxParameterPage.java

@Override
public ListMultimap<String, ParameterValue> getConfiguration() {
    ListMultimap<String, ParameterValue> result = ArrayListMultimap.create(selected.size(), 1);
    for (Entry<FunctionParameterDefinition, Boolean> entry : selected.entrySet())
        result.put(entry.getKey().getName(), new ParameterValue(entry.getValue().toString()));

    return result;
}

From source file:org.opendaylight.protocol.bgp.rib.impl.ExportPolicyPeerTracker.java

private Map<PeerRole, PeerExportGroup> createGroups(final Map<YangInstanceIdentifier, PeerRole> peerPathRoles) {
    if (peerPathRoles.isEmpty()) {
        return Collections.emptyMap();
    }//from   ww w .j av a 2 s  .c  o  m

    // Index things nicely for easy access
    final Multimap<PeerRole, YangInstanceIdentifier> roleToIds = ArrayListMultimap
            .create(PeerRole.values().length, 2);
    final Map<PeerId, PeerRole> idToRole = new HashMap<>();
    for (final Entry<YangInstanceIdentifier, PeerRole> e : peerPathRoles.entrySet()) {
        roleToIds.put(e.getValue(), e.getKey());
        idToRole.put(IdentifierUtils.peerId((NodeIdentifierWithPredicates) e.getKey().getLastPathArgument()),
                e.getValue());
    }

    // Optimized immutable copy, reused for all PeerGroups
    final Map<PeerId, PeerRole> allPeerRoles = ImmutableMap.copyOf(idToRole);

    final Map<PeerRole, PeerExportGroup> ret = new EnumMap<>(PeerRole.class);
    for (final Entry<PeerRole, Collection<YangInstanceIdentifier>> e : roleToIds.asMap().entrySet()) {
        final AbstractExportPolicy policy = this.policyDatabase.exportPolicyForRole(e.getKey());
        final Collection<Entry<PeerId, YangInstanceIdentifier>> peers = ImmutableList
                .copyOf(Collections2.transform(e.getValue(), GENERATE_PEERID));

        ret.put(e.getKey(), new PeerExportGroup(peers, allPeerRoles, policy));
    }

    return ret;
}