it.unimi.dsi.fastutil.ints.Int2IntMap Java Examples

The following examples show how to use it.unimi.dsi.fastutil.ints.Int2IntMap. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: LayeredLabelPropagation.java    From fasten with Apache License 2.0 6 votes vote down vote up
public Iterator<Int2IntMap.Entry> entries() {
	return new ObjectIterator<>() {
		private int i;

		private final Entry entry = new Entry();

		@Override
		public boolean hasNext() {
			return i < n;
		}

		@Override
		public Entry next() {
			if (!hasNext()) throw new NoSuchElementException();
			final int l = location[i++];
			entry.setKey(key[l]);
			entry.setValue(count[l]);
			return entry;
		}
	};
}
 
Example #2
Source File: AbstractIntegerSym.java    From symja_android_library with GNU General Public License v3.0 6 votes vote down vote up
/** {@inheritDoc} */
@Override
public IAST factorSmallPrimes(int numerator, int root) {
	// SortedMap<Integer, Integer> map = new TreeMap<Integer, Integer>();
	Int2IntMap map = new Int2IntRBTreeMap();
	IInteger b = this;
	boolean isNegative = false;
	if (sign() < 0) {
		b = b.negate();
		isNegative = true;
	}
	if (numerator != 1) {
		b = b.pow(numerator);
	}
	if (b.isLT(F.C8)) {
		return F.NIL;
	}

	BigInteger number = b.toBigNumerator();
	return factorBigInteger(number, isNegative, numerator, root, map);
}
 
Example #3
Source File: DictionaryBasedGroupKeyGenerator.java    From incubator-pinot with Apache License 2.0 6 votes vote down vote up
@Nonnull
@Override
public Iterator<GroupKey> iterator() {
  return new Iterator<GroupKey>() {
    private final ObjectIterator<Int2IntMap.Entry> _iterator = _rawKeyToGroupIdMap.int2IntEntrySet().fastIterator();
    private final GroupKey _groupKey = new GroupKey();

    @Override
    public boolean hasNext() {
      return _iterator.hasNext();
    }

    @Override
    public GroupKey next() {
      Int2IntMap.Entry entry = _iterator.next();
      _groupKey._groupId = entry.getIntValue();
      _groupKey._stringKey = getGroupKey(entry.getIntKey());
      return _groupKey;
    }

    @Override
    public void remove() {
      throw new UnsupportedOperationException();
    }
  };
}
 
Example #4
Source File: AbstractIdMap.java    From WorldGrower with GNU General Public License v3.0 6 votes vote down vote up
@Override
public final int findBestId(Predicate<WorldObject> predicate, Comparator<WorldObject> comparator,  World world) {
	WorldObject bestPerson = null;
	for(Int2IntMap.Entry entry : idsToValue.int2IntEntrySet()) {
		int id = entry.getIntKey();
		// id may not exist in world because it's filtered out by
		// WorldFacade, for example being invisible
		if (world.exists(id)) {
			WorldObject person = world.findWorldObjectById(id);
			
			if (predicate.test(person)) {
				if (bestPerson == null || comparator.compare(bestPerson, person) < 0) {
					bestPerson = person;
				}
			}
		}
	}
	
	if (bestPerson != null) {
		return bestPerson.getProperty(Constants.ID);
	} else {
		return -1;
	}
}
 
Example #5
Source File: AbstractIdMap.java    From WorldGrower with GNU General Public License v3.0 6 votes vote down vote up
@Override
public final int findWorstId(World world) {
	int worstId = -1;
	int worstRelationshipValue = Integer.MAX_VALUE;
	for(Int2IntMap.Entry entry : idsToValue.int2IntEntrySet()) {
		int id = entry.getIntKey();
		int relationshipValue = entry.getIntValue();
		
		if (relationshipValue < worstRelationshipValue) {
			worstRelationshipValue = relationshipValue;
			worstId = id;
		}
	}
	
	return worstId;
}
 
Example #6
Source File: AbstractIdMap.java    From WorldGrower with GNU General Public License v3.0 6 votes vote down vote up
@Override
public final int findBestId(Predicate<WorldObject> predicate, World world) {
	int bestId = -1;
	int bestRelationshipValue = Integer.MIN_VALUE;
	for(Int2IntMap.Entry entry : idsToValue.int2IntEntrySet()) {
		int id = entry.getIntKey();
		int relationshipValue = entry.getIntValue();
		
		// id may not exist in world because it's filtered out by
		// WorldFacade, for example being invisible
		if (world.exists(id)) {
			WorldObject person = world.findWorldObjectById(id);
			
			if (relationshipValue > bestRelationshipValue && predicate.test(person)) {
				bestRelationshipValue = relationshipValue;
				bestId = id;
			}
		}
	}
	
	return bestId;
}
 
Example #7
Source File: SetSimilarity.java    From RankSys with Mozilla Public License 2.0 6 votes vote down vote up
private Int2IntMap getFasterIntersectionMap(int uidx) {
    Int2IntOpenHashMap intersectionMap = new Int2IntOpenHashMap();
    intersectionMap.defaultReturnValue(0);

    IntIterator iidxs = data.getUidxIidxs(uidx);
    while (iidxs.hasNext()) {
        IntIterator vidxs = data.getIidxUidxs(iidxs.nextInt());
        while (vidxs.hasNext()) {
            intersectionMap.addTo(vidxs.nextInt(), 1);
        }
    }

    intersectionMap.remove(uidx);

    return intersectionMap;
}
 
Example #8
Source File: AbstractIntegerSym.java    From symja_android_library with GNU General Public License v3.0 5 votes vote down vote up
protected static IAST factorBigInteger(BigInteger number, boolean isNegative, int numerator, int denominator,
		Int2IntMap map) {
	if (number.compareTo(BigInteger.valueOf(7)) <= 0) {
		return F.NIL;
	}
	BigInteger rest = Primality.countPrimes32749(number, map);
	if (map.size() == 0) {
		return F.NIL;
	}
	IASTAppendable result = F.TimesAlloc(map.size() + 4);
	boolean evaled = false;
	for (Int2IntMap.Entry entry : map.int2IntEntrySet()) {
		int key = entry.getIntKey();
		int value = entry.getIntValue();
		int mod = value % denominator;
		int div = value / denominator;
		if (div != 0) {
			result.append(F.Power(valueOf(key), F.ZZ(div)));
			if (mod != 0) {
				result.append(F.Power(valueOf(key), F.QQ(mod, denominator)));
			}
			evaled = true;
		} else {
			result.append(F.Power(F.Power(valueOf(key), valueOf(value)), F.QQ(1, denominator)));
		}
	}
	if (evaled) {
		if (!rest.equals(BigInteger.ONE)) {
			result.append(F.Power(valueOf(rest), F.QQ(1, denominator)));
		}
		if (isNegative) {
			result.append(F.Power(F.CN1, F.QQ(numerator, denominator)));
		}
		return result;
	}
	return F.NIL;
}
 
Example #9
Source File: JsonUtils.java    From fastjgame with Apache License 2.0 5 votes vote down vote up
public static void main(String[] args) {
    Int2IntMap data = new Int2IntOpenHashMap();
    data.put(1, 5);
    data.put(6, 7);

    String json = writeAsJson(data);
    System.out.println("json = " + json);

    Int2IntMap rData = readMapFromJson(json, Int2IntOpenHashMap.class, Integer.class, Integer.class);
    System.out.println("map = " + rData);

    System.out.println("equals = " + data.equals(rData));
}
 
Example #10
Source File: AbstractFractionSym.java    From symja_android_library with GNU General Public License v3.0 5 votes vote down vote up
@Override
public IAST factorSmallPrimes(int numerator, int root) {
	BigInteger b = toBigNumerator();
	boolean isNegative = false;
	if (sign() < 0) {
		b = b.negate();
		isNegative = true;
	}
	if (numerator != 1) {
		b = b.pow(numerator);
	}
	BigInteger d = toBigDenominator();
	if (numerator != 1) {
		d = d.pow(numerator);
	}
	// SortedMap<Integer, Integer> bMap = new TreeMap<Integer, Integer>();
	Int2IntMap bMap = new Int2IntRBTreeMap();
	IAST bAST = AbstractIntegerSym.factorBigInteger(b, isNegative, numerator, root, bMap);
	// SortedMap<Integer, Integer> dMap = new TreeMap<Integer, Integer>();
	Int2IntMap dMap = new Int2IntRBTreeMap();
	IAST dAST = AbstractIntegerSym.factorBigInteger(d, false, numerator, root, dMap);
	if (bAST.isPresent()) {
		if (dAST.isPresent()) {
			return F.Times(bAST, F.Power(dAST, F.CN1));
		}
		return F.Times(bAST, F.Power(denominator(), F.QQ(-numerator, root)));
	} else if (dAST.isPresent()) {
		return F.Times(F.Power(numerator(), F.QQ(numerator, root)), F.Power(dAST, F.CN1));
	}
	return F.NIL;
}
 
Example #11
Source File: NoDictionarySingleColumnGroupKeyGenerator.java    From incubator-pinot with Apache License 2.0 5 votes vote down vote up
@SuppressWarnings("unchecked")
private int getKeyForValue(int value) {
  Int2IntMap map = (Int2IntMap) _groupKeyMap;
  int groupId = map.get(value);
  if (groupId == INVALID_ID) {
    if (_numGroups < _globalGroupIdUpperBound) {
      groupId = _numGroups;
      map.put(value, _numGroups++);
    }
  }
  return groupId;
}
 
Example #12
Source File: NoDictionarySingleColumnGroupKeyGenerator.java    From incubator-pinot with Apache License 2.0 5 votes vote down vote up
/**
 * Helper method to create the group-key map, depending on the data type.
 * Uses primitive maps when possible.
 *
 * @param keyType DataType for the key
 * @return Map
 */
private Map createGroupKeyMap(FieldSpec.DataType keyType) {
  Map map;
  switch (keyType) {
    case INT:
      Int2IntMap intMap = new Int2IntOpenHashMap();
      intMap.defaultReturnValue(INVALID_ID);
      map = intMap;
      break;

    case LONG:
      Long2IntOpenHashMap longMap = new Long2IntOpenHashMap();
      longMap.defaultReturnValue(INVALID_ID);
      map = longMap;
      break;

    case FLOAT:
      Float2IntOpenHashMap floatMap = new Float2IntOpenHashMap();
      floatMap.defaultReturnValue(INVALID_ID);
      map = floatMap;
      break;

    case DOUBLE:
      Double2IntOpenHashMap doubleMap = new Double2IntOpenHashMap();
      doubleMap.defaultReturnValue(INVALID_ID);
      map = doubleMap;
      break;

    case STRING:
      Object2IntOpenHashMap<String> stringMap = new Object2IntOpenHashMap<>();
      stringMap.defaultReturnValue(INVALID_ID);
      map = stringMap;
      break;

    default:
      throw new IllegalArgumentException("Illegal data type for no-dictionary key generator: " + keyType);
  }
  return map;
}
 
Example #13
Source File: AbstractIdMap.java    From WorldGrower with GNU General Public License v3.0 5 votes vote down vote up
@Override
public final int getSumOfAllValues() {
	int sumOfAllValues = 0;
	for(Int2IntMap.Entry entry : idsToValue.int2IntEntrySet()) {
		sumOfAllValues += entry.getIntValue();
	}
	return sumOfAllValues;
}
 
Example #14
Source File: SetSimilarity.java    From RankSys with Mozilla Public License 2.0 5 votes vote down vote up
private Int2IntMap getIntersectionMap(int idx1) {
    Int2IntOpenHashMap intersectionMap = new Int2IntOpenHashMap();
    intersectionMap.defaultReturnValue(0);

    data.getUidxPreferences(idx1)
            .forEach(ip -> data.getIidxPreferences(ip.v1)
                    .forEach(up -> intersectionMap.addTo(up.v1, 1)));

    intersectionMap.remove(idx1);

    return intersectionMap;
}
 
Example #15
Source File: RedirectMap.java    From tagme with Apache License 2.0 5 votes vote down vote up
@Override
protected Int2IntMap parseSet() throws IOException
{
	final Object2IntMap<String> titles = new TitlesToWIDMap(lang).getDataset();
	final Int2IntOpenHashMap map = new Int2IntOpenHashMap(3000000);
	SQLWikiParser parser = new SQLWikiParser(log, "Titles NF") {
		@Override
		public boolean compute(ArrayList<String> values) throws IOException
		{
			int ns = Integer.parseInt(values.get(SQLWikiParser.REDIRECT_NS));
			if (ns == SQLWikiParser.NS_ARTICLE)
			{
				int idFrom = Integer.parseInt(values.get(SQLWikiParser.REDIRECT_ID_FROM));
				int idTo = titles.getInt(cleanPageName(values.get(SQLWikiParser.REDIRECT_TITLE_TO)));
				if (idTo >= 0)
					map.put(idFrom, idTo);
				else this.updateItem(0);
				
				return true;
			} else return false;
		}
	};

	File input = WikipediaFiles.REDIRECTS.getSourceFile(lang);
	InputStreamReader in = new InputStreamReader(new FileInputStream(input), Charset.forName("UTF-8"));
	parser.compute(in);
	in.close();
	
	map.defaultReturnValue(-1);
	map.trim();
	
	return map;

}
 
Example #16
Source File: CustomHashMap.java    From kourami with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
public boolean union(CustomHashMap other){
boolean modified = false;
for(Int2IntMap.Entry otherEntry : other.int2IntEntrySet()){
    if(!this.containsKey(otherEntry.getIntKey())){
	this.put(otherEntry.getIntKey(), otherEntry.getIntValue());
	modified = true;
    }
}
return modified;
   }
 
Example #17
Source File: HashInstance.java    From jstarcraft-ai with Apache License 2.0 5 votes vote down vote up
@Override
public HashInstance iterateQualityFeatures(QualityAccessor accessor) {
    for (Int2IntMap.Entry term : this.qualityFeatures.int2IntEntrySet()) {
        accessor.accessorFeature(term.getIntKey(), term.getIntValue());
    }
    return this;
}
 
Example #18
Source File: MultiSegmentReaderAccessibleInfoProvider.java    From GraphJet with Apache License 2.0 4 votes vote down vote up
/**
 * Note that some readers might still access the oldest segment for a while -- we do NOT interrupt
 * readers accessing the old segment. The expected behavior is that after a while though, none of
 * them will reference it anymore (once their computation finishes) and the JVM can then
 * garbage-collect it. This lagging reading behavior is what makes it hard to explicitly recycle
 * the already allocated memory so we need memory for k+1 segments (where k is the number of
 * segments we'll maintain).
 *
 * @param numEdgesInLiveSegment          is the number of edges in the current live segment
 * @param numEdgesInNonLiveSegmentsMap   contains a map from segment id to number of edges in it
 * @param statsReceiver                  is where the stats are updated
 * @param bipartiteGraphSegmentProvider  provides the new segment to be added
 * @return the live segment that was added
 */
public T addNewSegment(
    int numEdgesInLiveSegment,
    Int2IntMap numEdgesInNonLiveSegmentsMap,
    StatsReceiver statsReceiver,
    BipartiteGraphSegmentProvider<T> bipartiteGraphSegmentProvider
) {
  final Int2ObjectMap<T> segments =
      new Int2ObjectOpenHashMap<T>(multiSegmentReaderAccessibleInfo.getSegments());
  numEdgesInNonLiveSegmentsMap.put(liveSegmentId, numEdgesInLiveSegment);
  int oldestSegmentId = multiSegmentReaderAccessibleInfo.oldestSegmentId;
  // remove a segment if we're at the limit
  if (multiSegmentReaderAccessibleInfo.getSegments().size() == maxNumSegments) {
    segments.remove(oldestSegmentId);
    numEdgesInNonLiveSegmentsMap.remove(oldestSegmentId);
    LOG.info("Removed segment " + oldestSegmentId);
    oldestSegmentId++;
  } else {
    statsReceiver.counter("numSegments").incr();
  }
  int newLiveSegmentId =  multiSegmentReaderAccessibleInfo.liveSegmentId + 1;
  // add a new segment
  T liveSegment =
      bipartiteGraphSegmentProvider.generateNewSegment(newLiveSegmentId, maxNumEdgesPerSegment);
  segments.put(newLiveSegmentId, liveSegment);
  // now make the switch for the readers -- this is immediately published and visible!
  multiSegmentReaderAccessibleInfo = new MultiSegmentReaderAccessibleInfo<T>(
          segments, oldestSegmentId, newLiveSegmentId);

  // flush the write
  liveSegmentId = newLiveSegmentId;

  numEdgesInNonLiveSegments = 0;
  for (int segmentEdgeCount : numEdgesInNonLiveSegmentsMap.values()) {
    numEdgesInNonLiveSegments += segmentEdgeCount;
  }
  LOG.info("Total number of edges in graph = " + numEdgesInNonLiveSegments);
  LOG.info("Created a new segment: oldestSegmentId = " + oldestSegmentId
      + ", and liveSegmentId = " + liveSegmentId);

  return liveSegment;
}
 
Example #19
Source File: WikipediaEdges.java    From tagme with Apache License 2.0 4 votes vote down vote up
@Override
protected void parseFile(File file) throws IOException
{

	final Int2IntMap redirects = DatasetLoader.get(new RedirectMap(lang));
	final IntSet disambiguations = DatasetLoader.get(new DisambiguationWIDs(lang));
	final IntSet listpages = DatasetLoader.get(new ListPageWIDs(lang));
	final IntSet ignores = DatasetLoader.get(new IgnoreWIDs(lang));
	final IntSet valids = new AllWIDs(lang).getDataset();//DatasetLoader.get(new AllWIDs(lang));
	valids.removeAll(redirects.keySet());
	//valids.removeAll(disambiguations);
	//valids.removeAll(listpages);
	valids.removeAll(ignores);
	final Object2IntMap<String> titles = DatasetLoader.get(new TitlesToWIDMap(lang));


	File tmp = Dataset.createTmpFile();
	final BufferedWriter out = new BufferedWriter(new FileWriter(tmp));
	SQLWikiParser parser = new 	SQLWikiParser(log) {
		@Override
		public boolean compute(ArrayList<String> values) throws IOException
		{
			int idFrom = Integer.parseInt(values.get(SQLWikiParser.PAGELINKS_ID_FROM));
			if (redirects.containsKey(idFrom)) idFrom = redirects.get(idFrom);
			
			int ns = Integer.parseInt(values.get(SQLWikiParser.PAGELINKS_NS));

			
			if (ns == SQLWikiParser.NS_ARTICLE && !redirects.containsKey(idFrom) && !ignores.contains(idFrom) &&
					//questo e' necessario perchè alcune pagine che sono delle liste, in inglese finiscono
					//tra le pagine di disambiguazione (per via della categoria All_set_index_articles)
					(listpages.contains(idFrom) || !disambiguations.contains(idFrom))
					//!listpages.contains(idFrom) && !disambiguations.contains(idFrom)
					&& valids.contains(idFrom)
			
			/**/ )
			{

				String titleTo = Dataset.cleanPageName(values.get(SQLWikiParser.PAGELINKS_TITLE_TO));

				int idTo = titles.getInt(titleTo);
				
				if (redirects.containsKey(idTo)) idTo = redirects.get(idTo);
				if (idTo >= 0 && !ignores.contains(idTo) && (listpages.contains(idFrom) || !disambiguations.contains(idFrom)) && valids.contains(idTo))
				{
					out.append(Integer.toString(idFrom));
					out.append(SEP_CHAR);
					out.append(Integer.toString(idTo));
					out.append('\n');
					return true;
				}
			}
			return false;
		}
	};

	File input = WikipediaFiles.PAGE_LINKS.getSourceFile(lang);
	parser.compute(input);
	out.close();

	log.info("Now sorting edges...");

	ExternalSort sorter = new ExternalSort();
	sorter.setUniq(true);
	sorter.setNumeric(true);
	sorter.setColumns(new int[]{0,1});
	sorter.setInFile(tmp.getAbsolutePath());
	sorter.setOutFile(file.getAbsolutePath());
	sorter.run();

	tmp.delete();

	log.info("Sorted. Done.");

}
 
Example #20
Source File: AnchorTernaryTrie.java    From tagme with Apache License 2.0 4 votes vote down vote up
public static Anchor fake(String w){
	Int2IntMap links = new Int2IntArrayMap();
	links.put(0, w.length());
	return Anchor.build(0, links, w.length(), new IntArraySet());
}
 
Example #21
Source File: PageRankImpl.java    From datafu with Apache License 2.0 4 votes vote down vote up
public Int2IntMap.FastEntrySet getNodeIds()
{
  return this.nodeIndices.int2IntEntrySet();
}
 
Example #22
Source File: CustomHashMap.java    From kourami with BSD 3-Clause "New" or "Revised" License 4 votes vote down vote up
public CustomHashMap(Int2IntMap m, float f){
super(m, f);
   }
 
Example #23
Source File: CustomHashMap.java    From kourami with BSD 3-Clause "New" or "Revised" License 4 votes vote down vote up
public CustomHashMap(Int2IntMap m){
super(m);
   }
 
Example #24
Source File: FindCoversGenerator.java    From metanome-algorithms with Apache License 2.0 4 votes vote down vote up
private IntList generateNextOrdering(List<DifferenceSet> next, IntList currentOrdering, int attribute) {

        IntList result = new IntArrayList();

        Int2IntMap counting = new Int2IntArrayMap();
        boolean seen = false;
        for (int i = 0; i < currentOrdering.size(); i++) {

            if (!seen) {
                if (currentOrdering.getInt(i) == attribute) {
                    seen = true;
                }
            } else {

                counting.put(currentOrdering.getInt(i), 0);
                for (DifferenceSet ds : next) {

                    if (ds.getAttributes().get(currentOrdering.getInt(i))) {
                        counting.put(currentOrdering.getInt(i), counting.get(currentOrdering.getInt(i)) + 1);
                    }
                }
            }
        }

        // TODO: Comperator und TreeMap --> Tommy
        while (true) {

            if (counting.size() == 0) {
                break;
            }

            int biggestAttribute = -1;
            int numberOfOcc = 0;
            for (int attr : counting.keySet()) {

                if (biggestAttribute < 0) {
                    biggestAttribute = attr;
                    numberOfOcc = counting.get(attr);
                    continue;
                }

                int tempOcc = counting.get(attr);
                if (tempOcc > numberOfOcc) {
                    numberOfOcc = tempOcc;
                    biggestAttribute = attr;
                } else if (tempOcc == numberOfOcc) {
                    if (biggestAttribute > attr) {
                        biggestAttribute = attr;
                    }
                }
            }

            if (numberOfOcc == 0) {
                break;
            }

            result.add(biggestAttribute);
            counting.remove(biggestAttribute);
        }

        return result;
    }
 
Example #25
Source File: FindCoversGenerator.java    From metanome-algorithms with Apache License 2.0 4 votes vote down vote up
private IntList generateInitialOrdering(List<DifferenceSet> tempDiffSet) {

        IntList result = new IntArrayList();

        Int2IntMap counting = new Int2IntArrayMap();
        for (DifferenceSet ds : tempDiffSet) {

            int lastIndex = ds.getAttributes().nextSetBit(0);

            while (lastIndex != -1) {
                if (!counting.containsKey(lastIndex)) {
                    counting.put(lastIndex, 1);
                } else {
                    counting.put(lastIndex, counting.get(lastIndex) + 1);
                }
                lastIndex = ds.getAttributes().nextSetBit(lastIndex + 1);
            }
        }

        // TODO: Comperator und TreeMap --> Tommy
        while (true) {

            if (counting.size() == 0) {
                break;
            }

            int biggestAttribute = -1;
            int numberOfOcc = 0;
            for (int attr : counting.keySet()) {

                if (biggestAttribute < 0) {
                    biggestAttribute = attr;
                    numberOfOcc = counting.get(attr);
                    continue;
                }

                int tempOcc = counting.get(attr);
                if (tempOcc > numberOfOcc) {
                    numberOfOcc = tempOcc;
                    biggestAttribute = attr;
                } else if (tempOcc == numberOfOcc) {
                    if (biggestAttribute > attr) {
                        biggestAttribute = attr;
                    }
                }
            }

            if (numberOfOcc == 0) {
                break;
            }

            result.add(biggestAttribute);
            counting.remove(biggestAttribute);
        }

        return result;
    }