Tag: 集合

JavaScript对象中的元素数目

有没有一种方法来(从某处)的JavaScript对象的元素数量? (即恒定的时间复杂度)。 我无法find一个属性或方法来检索该信息。 到目前为止,我只能想到通过整个集合进行迭代,但这是线性时间。 奇怪的是没有直接访问对象的大小,你不觉得。 编辑: 我在谈论Object对象(通常不是对象): var obj = new Object ;

为什么Enumeration转换为ArrayList而不是java.utils中的List?

java.utils包中的Collections.list()方法返回一个ArrayList<T>而不是List<T>是否有很好的理由? 显然ArrayList是一个List ,但我的印象是,返回接口types而不是实现types通常是好的做法。

有一个保存插入顺序的Set也实现了List吗?

我试图在Java中同时findjava.util.List和java.util.Set的实现。 我希望这个类只允许唯一的元素(如Set )并保留它们的顺序(如List )。 它存在于JDK 6中吗? 有List<T>#add(int, T)是很重要的,所以我可以插入到特定的位置。

在string集合中search最快的方法

问题: 我有一个约12万个用户(string)的文本文件,我想存储在一个集合中,然后在该集合上执行search。 每次用户更改文本TextBox的文本时都会发生search方法,并且结果应该是包含 TextBox本的string。 我不必更改列表,只需将结果ListBox到列表框中即可。 我到目前为止所尝试的是: 我尝试了两个不同的集合/容器,我从一个外部文本文件(当然是一次)转储string条目: List<string> allUsers; HashSet<string> allUsers; 通过以下的LINQ查询: allUsers.Where(item => item.Contains(textBox_search.Text)).ToList(); 我的search事件(用户更改search文本时触发): private void textBox_search_TextChanged(object sender, EventArgs e) { if (textBox_search.Text.Length > 2) { listBox_choices.DataSource = allUsers.Where(item => item.Contains(textBox_search.Text)).ToList(); } else { listBox_choices.DataSource = null; } } 结果: 两者都给了我一个很差的响应时间(每个按键之间大约1-3秒)。 题: 你认为我的瓶颈在哪里? 我用过的集合? search方法? 都? 我怎样才能获得更好的性能和更stream畅的function?

在Scala中val-mutable与var-immutable

在Scala中有没有关于什么时候对可变集合使用val与将不可变集合使用var的指导? 或者你应该真正的目标为val与一个不可改变的集合? collections这两种types的事实给了我很多的select,而且我经常不知道如何做出这样的select。

NameValueCollection vs Dictionary <string,string>

可能重复: IDictionary <string,string>或NameValueCollection 任何理由我应该使用Dictionary <string,string>而不是NameValueCollection? (在C#/ .NET框架中) 选项1,使用NameValueCollection: //enter values: NameValueCollection nvc = new NameValueCollection() { {"key1", "value1"}, {"key2", "value2"}, {"key3", "value3"} }; // retrieve values: foreach(string key in nvc.AllKeys) { string value = nvc[key]; // do something } 选项2,使用Dictionary <string,string> … //enter values: Dictionary<string, string> dict = new Dictionary<string, string>() { {"key1", "value1"}, {"key2", […]

在Java中的有序集的任何实现?

如果有人熟悉Objective-C,那么有一个名为NSOrderedSet的集合,它充当Set ,其项目可以作为Array的访问。 在Java中有这样的东西吗? 我听说有一个名为LinkedHashMap的集合,但是我没有发现任何类似的集合。

迭代时从集合中移除元素

AFAIK,有两种方法: 迭代集合的副本 使用实际集合的迭代器 例如, List<Foo> fooListCopy = new ArrayList<Foo>(fooList); for(Foo foo : fooListCopy){ // modify actual fooList } 和 Iterator<Foo> itr = fooList.iterator(); while(itr.hasNext()){ // modify actual fooList using itr.remove() } 有没有什么理由比其他方式更喜欢一种方法(例如,由于可读性的原因,宁愿select第一种方法)?

Java 8:Streams vs Collections的性能

我是Java 8的新手。我还是不太了解这个API,但是我做了一个小的非正式的基准testing来比较新的Streams API和旧版本的性能。 testing包括过滤Integer列表,并为每个偶数计算平方根并将其存储在Double的结果List中。 这里是代码: public static void main(String[] args) { //Calculating square root of even numbers from 1 to N int min = 1; int max = 1000000; List<Integer> sourceList = new ArrayList<>(); for (int i = min; i < max; i++) { sourceList.add(i); } List<Double> result = new LinkedList<>(); //Collections approach long t0 […]

将列表截断为给定数量的元素

什么方法截断一个列表 – 例如前100个元素 – 丢弃其他元素(没有遍历个别元素)?