Questions tagged «collections»

集合API为开发人员提供了一组类和接口,使处理对象集合更加容易。

8
迭代时从集合中删除元素
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() } 是否有任何理由倾向于一种方法而不是另一种方法(例如,出于可读性的简单原因而倾向于第一种方法)?

12
如何在Java中的列表上获得反向列表视图?
我想在列表上有一个反向列表视图(以与List#sublist在列表上提供子列表视图类似的方式)。是否有提供此功能的功能? 我既不想复制列表,也不想修改列表。 在这种情况下,如果我至少可以在列表上获得一个反向迭代器就足够了。 另外,我知道自己如何实施。我只是问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(); } }; } …

5
Google Guava与Apache Commons [关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我一直在寻找Java中的双向地图实现,偶然发现了这两个库: Google Guava(以前称为“ Google Collections”) Apache Commons集合 两者都是免费的,具有我一直在寻找的双向地图实现(Apache中的BidiMap,谷歌中的BiMap),尺寸几乎惊人地相同(Apache 493 kB,Google 499 kB)[ed .:不再是真的!在所有方面都与我非常相似。 我应该选择哪一个,为什么?还有其他等效的替代方法(必须免费并且至少具有双向地图)吗?我正在使用最新的Java SE,因此无需人为地限制为Java 5或类似的东西。



7
哪个更有效,一个for-each循环或一个迭代器?
遍历集合的最有效方法是哪种? List<Integer> a = new ArrayList<Integer>(); for (Integer integer : a) { integer.toString(); } 要么 List<Integer> a = new ArrayList<Integer>(); for (Iterator iterator = a.iterator(); iterator.hasNext();) { Integer integer = (Integer) iterator.next(); integer.toString(); } 请注意,尽管最后一个问题的答案之一接近,但这不是this,this,this或this的精确重复。之所以不是这样,是因为其中大多数是比较循环get(i),而不是使用迭代器,而您在循环中调用该循环。 正如元建议,我将发布我对这个问题的答案。



8
从列表<Integer>中正确删除一个整数
这是我刚遇到的一个陷阱。考虑一个整数列表: List&lt;Integer&gt; list = new ArrayList&lt;Integer&gt;(); list.add(5); list.add(6); list.add(7); list.add(1); 关于执行时会发生什么的任何有根据的猜测list.remove(1)?那list.remove(new Integer(1))呢 这可能会导致一些令人讨厌的错误。 在处理整数列表时,区分remove(int index)从给定索引remove(Object o)中删除元素的和,按引用删除元素的正确方法是什么? 这里要考虑的重点是提到的@Nikita-精确参数匹配优先于自动装箱。

10
Kotlin的列表缺少“添加”,“删除”,地图缺少“放置”等?
在Java中,我们可以执行以下操作 public class TempClass { List&lt;Integer&gt; myList = null; void doSomething() { myList = new ArrayList&lt;&gt;(); myList.add(10); myList.remove(10); } } 但是,如果我们直接将其重写为Kotlin,如下所示 class TempClass { var myList: List&lt;Int&gt;? = null fun doSomething() { myList = ArrayList&lt;Int&gt;() myList!!.add(10) myList!!.remove(10) } } 我没有找到的错误add,并remove从我的列表功能 我将其强制转换为ArrayList,但在Java中不需要强制转换,这很奇怪。这就破坏了使用抽象类List的目的 class TempClass { var myList: List&lt;Int&gt;? = null fun …

8
大小受限制的队列,其中包含Java中的最后N个元素
关于Java库的一个非常简单和快速的问题:是否有一个现成的类,该类Queue以固定的最大大小实现-即,它始终允许添加元素,但是它将静默删除head元素以容纳新添加元素的空间。 当然,手动实现它很简单: import java.util.LinkedList; public class LimitedQueue&lt;E&gt; extends LinkedList&lt;E&gt; { private int limit; public LimitedQueue(int limit) { this.limit = limit; } @Override public boolean add(E o) { super.add(o); while (size() &gt; limit) { super.remove(); } return true; } } 据我所知,Java stdlibs中没有标准实现,但是Apache Commons中可能有这种实现?
197 collections  queue  java 

16
将JSON转换为Map
像这样转换JSON代码的最佳方法是什么: { "data" : { "field1" : "value1", "field2" : "value2" } } 在Java Map中,其中一个键为(field1,field2),而这些字段的值为(value1,value2)。 有任何想法吗?我应该使用Json-lib吗?或者,如果我编写自己的解析器会更好?


4
如何遍历List <T>并抓住每个项目?
如何遍历列表并抓住每个项目? 我希望输出看起来像这样: Console.WriteLine("amount is {0}, and type is {1}", myMoney.amount, myMoney.type); 这是我的代码: static void Main(string[] args) { List&lt;Money&gt; myMoney = new List&lt;Money&gt; { new Money{amount = 10, type = "US"}, new Money{amount = 20, type = "US"} }; } class Money { public int amount { get; set; } public …
181 c#  for-loop  collections 

4
标准Kotlin库中提供了哪些Java 8 Stream.collect等效项?
在Java 8中,Stream.collect它允许对集合进行聚合。在Kotlin中,除了以stdlib中的扩展功能的集合形式存在之外,这并不完全相同。但尚不清楚不同用例的等效性。 例如,在JavaDocCollectors的顶部是为Java 8编写的示例,将它们移植到Kolin时,在不同的JDK版本上不能使用Java 8类,因此可能应该以不同的方式编写它们。 在网上显示Kotlin集合示例的资源方面,它们通常是微不足道的,不能真正与相同的用例进行比较。有什么真正与案例相匹配的好示例,例如针对Java 8记录的案例Stream.collect?列表是: 将名称累积到列表中 将名称累积到TreeSet中 将元素转换为字符串并将其连接起来,并以逗号分隔 计算员工的薪金总额 按部门分组员工 按部门计算薪金总额 划分学生通过和失败 在上面链接的JavaDoc中有详细信息。 注意: 这个问题是作者故意写和回答的(“ 自我回答的问题”),因此SO中经常出现Kotlin主题的惯用答案。还要澄清一些针对Kotlin字母的非常古老的答案,这些答案对于当今的Kotlin而言并不准确。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.