Tag: 集合

在C#中等效的Java Map

我想用我select的一个键来保存一个集合中的项目列表。 在Java中,我会简单地使用Map如下: class Test { Map<Integer,String> entities; public String getEntity(Integer code) { return this.entities.get(code); } } 有没有在C#中这样做的等效方式? System.Collections.Generic.Hashset不使用散列,我不能定义一个自定义types键System.Collections.Hashtable不是一个generics类 System.Collections.Generic.Dictionary没有get(Key)方法

如何从hashmap中获得一个条目而无需迭代

有没有一个优雅的方式,如果没有知道密钥,只需从HashMap中获取一个Entry<K,V> ,不需要迭代。 由于进入的顺序并不重要,我们可以这样说 hashMapObject.get(zeroth_index); 虽然我知道没有这样的索引方法。 如果我尝试了下面提到的方法, 它仍然需要获取散列表的所有条目集 。 for(Map.Entry<String, String> entry : MapObj.entrySet()) { return entry; } 欢迎提出build议。 编辑:请build议任何其他数据结构,以满足要求。

从IEnumerable <KeyValuePair <>>重新创build一个字典

我有一个方法返回一个IEnumerable<KeyValuePair<string, ArrayList>> ,但一些调用者要求方法的结果是一个字典。 如何将IEnumerable<KeyValuePair<string, ArrayList>>转换为Dictionary<string, ArrayList>以便我可以使用TryGetValue ? 方法: public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents() { // … yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation); } 呼叫者: Dictionary<string, ArrayList> actual = target.GetComponents(); actual.ContainsKey("something");

Objective-C中有强types的集合吗?

我是Mac / iPhone编程和Objective-C的新手。 在C#和Java中,我们有“generics”,集合类的成员只能是声明的types。 例如,在C# Dictionary<int, MyCustomObject> 只能包含键types为MyCustomObject的整数和值。 Objective-C中是否存在类似的机制?

如何在Java中将Set设置为列表?

在Java中,我有一个Set ,我想把它变成一个有序List 。 java.util.Collections包中有一个方法可以帮我吗?

如何在Java中反转列表?

我想在列表上有一个反转的列表视图(类似于List#sublist提供列表中的子列表视图)。 有没有提供这种function的一些function? 我不想做任何列表的副本,也不要修改列表。 在这种情况下,如果在列表中至less可以得到一个反向迭代器就足够了。 另外,我知道如何自己实现这个。 我只是问,Java是否已经提供了这样的东西。 演示实施: static <T> Iterable<T> iterableReverseList(final List<T> l) { return new Iterable<T>() { public Iterator<T> iterator() { return new Iterator<T>() { ListIterator<T> listIter = l.listIterator(l.size()); public boolean hasNext() { return listIter.hasPrevious(); } public T next() { return listIter.previous(); } public void remove() { listIter.remove(); } }; } }; } 我只是发现一些List实现有descendingIterator()这是我所需要的。 […]

Collection.stream()。forEach()和Collection.forEach()之间有什么区别?

我明白,使用.stream() ,我可以使用像.filter()或使用并行stream链操作。 但是,如果我需要执行小操作(例如,打印列表元素),它们之间有什么区别呢? collection.stream().forEach(System.out::println); collection.forEach(System.out::println);

如何轻松初始化元组列表?

我喜欢元组 它们允许您快速将相关信息分组在一起,而无需为其编写结构或类。 这在重构非常本地化的代码时非常有用。 初始化它们的列表似乎有点多余。 var tupleList = new List<Tuple<int, string>> { Tuple.Create( 1, "cow" ), Tuple.Create( 5, "chickens" ), Tuple.Create( 1, "airplane" ) }; 没有更好的方法吗? 我会喜欢字典初始值设定项的解决scheme。 Dictionary<int, string> students = new Dictionary<int, string>() { { 111, "bleh" }, { 112, "bloeh" }, { 113, "blah" } }; 我们不能使用类似的语法吗?

为什么HashSet <Point>比HashSet <string>慢得多?

我想存储一些像素位置而不允许重复,所以首先想到的是HashSet<Point>或类似的类。 然而,与HashSet<string>类似,这似乎很慢。 例如,这个代码: HashSet<Point> points = new HashSet<Point>(); using (Bitmap img = new Bitmap(1000, 1000)) { for (int x = 0; x < img.Width; x++) { for (int y = 0; y < img.Height; y++) { points.Add(new Point(x, y)); } } } 大约需要22.5秒。 虽然下面的代码(这显然不是一个好的select)只需要1.6秒: HashSet<string> points = new HashSet<string>(); using (Bitmap img = new Bitmap(1000, […]

在Java中保存最后N个元素的大小限制队列

关于Java库的一个非常简单和快速的问题是:是否有一个现成的类,它实现了具有固定最大大小的Queue – 即它总是允许添加元素,但是它会默默移除头元素以容纳新增元素的空间。 当然,手动实现它是微不足道的: import java.util.LinkedList; public class LimitedQueue<E> extends LinkedList<E> { private int limit; public LimitedQueue(int limit) { this.limit = limit; } @Override public boolean add(E o) { super.add(o); while (size() > limit) { super.remove(); } return true; } } 据我所知,在Java stdlib中没有标准的实现,但在Apache Commons中可能有这样的一个呢?