List of usage examples for com.google.common.collect ArrayListMultimap create
public static <K, V> ArrayListMultimap<K, V> create(int expectedKeys, int expectedValuesPerKey)
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; }