Tag: 哈希集

使HashSet <string>不区分大小写

我有HashSet参数的方法。 我需要做大小写不敏感包含在其中: public void DoSomething(HashSet<string> set, string item) { var x = set.Contains(item); … } 是否有任何方法使现有的HashSet不区分大小写(不要创build新的)? 我正在寻找最佳性能的解决scheme。 编辑 包含可以被多次调用。 所以IEnumerable扩展对我来说是不可接受的,因为性能比本地的HashSet Contains方法要低。 解 既然,回答我的问题是NO,这是不可能的,我创build并使用了下面的方法: public HashSet<string> EnsureCaseInsensitive(HashSet<string> set) { return set.Comparer == StringComparer.OrdinalIgnoreCase ? set : new HashSet<string>(set, StringComparer.OrdinalIgnoreCase); }

从HashSet <String>转换为String

将HashSet<String>转换为String[]的最佳方法是什么?

HashSet允许重复的项目插入 – C#

这种看起来像一个noob问题,但我无法具体find这个问题的答案。 我有这个class级: public class Quotes{ public string symbol; public string extension } 我正在使用这个: HashSet<Quotes> values = new HashSet<Quotes>(); 不过,我可以多次添加相同的Quotes对象。 例如,我的Quotes对象的'symbol'等于'A','extension'等于'= n',这个Quotes对象在HashSet中多次出现(通过debugging模式查看Hashset)。 打电话的时候我曾经想过 values.Add(new Quotes(symb, ext)); 使用相同的symb和ext,将返回“false”,并且不会添加元素。 我有一种感觉,它与HashSet添加新对象时比较Quotes对象有关。 任何帮助将不胜感激!

Java HashSet <String>的contains()方法testingstring或对象标识是否相等?

比方说,我在Java中有这个代码: HashSet<String> wordSet = new HashSet<String>(); String a = "hello"; String b = "hello"; wordSet.add(a); 会wordSet.contains(b); 返回true或false ? 据我所知, a和b指的是不同的对象,即使它们的值是相同的。 所以contains()应该返回false 。 但是,当我运行这个代码时,它返回true 。 只要b包含值"hello"它将始终返回true无论String对象b来自哪里? 我总是保证这一点? 如果不是,我什么时候不能保证呢? 那么如果我想用Strings以外的对象做类似的事情呢?

如何从HashSet <T>检索实际项目?

我已经阅读了这个问题 ,为什么这是不可能的,但还没有find解决问题的办法。 我想从.NET HashSet<T>检索一个项目。 我正在寻找一个有这个签名的方法: /// <summary> /// Determines if this set contains an item equal to <paramref name="item"/>, /// according to the comparison mechanism that was used when the set was created. /// The set is not changed. If the set does contain an item equal to /// <paramref name="item"/>, then the item from […]

为什么java.util.HashSet没有get(Object o)方法?

我已经看到其他问题关于从基于索引值获取对象,我明白为什么这是不可能的。 但是我还没有find一个很好的解释,为什么一个逐个对象是不允许的,所以我想问。 HashSet由一个HashMap支持,所以从它获得一个对象应该是非常简单的。 就像现在,看来我将不得不迭代HashSet中的每个项目,并testing似乎不必要的相等性。 我可以只使用HashMap,但是我不需要key:value对,我只需要一个Set。 例如说我有Foo.java: package example; import java.io.Serializable; public class Foo implements Serializable { String _id; String _description; public Foo(String id){ this._id = id } public void setDescription(String description){ this._description = description; } public String getDescription(){ return this._description; } public boolean equals(Object obj) { //equals code, checks if id's are equal } public […]

如何在case-sensitive模式下使用HashSet <string> .Contains()方法?

如何在case-sensitive模式下使用HashSet<string>.Contains()方法?

HashSet removeAll方法出奇的慢

我有一个集合 – 一个HashSet我想从中删除一些项目…“清除”集合中的任何项目都不会在原始集合中。 我在命令行中指定“源”集合的大小和“删除”集合的大小,然后构build它们。 源集只包含非负整数; 删除集合只包含负整数。 我测量了使用System.currentTimeMillis()去除所有元素需要多长时间,这是不是世界上最准确的秒表,但在这种情况下是足够的,正如你将看到的。 代码如下: import java.util.*; public class Test { public static void main(String[] args) { int sourceSize = Integer.parseInt(args[0]); int removalsSize = Integer.parseInt(args[1]); Set<Integer> source = new HashSet<Integer>(); Collection<Integer> removals = new ArrayList<Integer>(); for (int i = 0; i < sourceSize; i++) { source.add(i); } for (int i = 1; […]

什么时候应该使用HashSet <T>types?

我正在探索HashSet<T>types,但我不明白它在集合中的位置。 可以用它来代替List<T>吗? 我想HashSet<T>的性能会更好,但是我看不到其元素的单独访问。 仅仅是枚举吗?

保留sorting的HashSet

我需要一个保留插入顺序的HashSet,在框架中是否有这样的实现?