哪种是最有效的遍历集合的方式?
List<Integer> a = new ArrayList<Integer>();
for (Integer integer : a) {
integer.toString();
}
Run Code Online (Sandbox Code Playgroud)
要么
List<Integer> a = new ArrayList<Integer>();
for (Iterator iterator = a.iterator(); iterator.hasNext();) {
Integer integer = (Integer) iterator.next();
integer.toString();
}
Run Code Online (Sandbox Code Playgroud)
请注意,这不是这个,这个,这个或这个的完全重复,尽管最后一个问题的答案之一很接近.这不是欺骗的原因是,大多数都是比较你get(i)
在循环中调用的循环,而不是使用迭代器.
正如Meta上所建议的,我将发布我对这个问题的回答.
有没有办法可以在Rails应用程序中获得所有模型的集合?
基本上,我可以这样做: -
Models.each do |model|
puts model.class.name
end
Run Code Online (Sandbox Code Playgroud) 这是我刚刚遇到的一个很好的陷阱.考虑一个整数列表:
List<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(6);
list.add(7);
list.add(1);
Run Code Online (Sandbox Code Playgroud)
对你执行时会发生什么的任何有根据的猜测list.remove(1)
?怎么样list.remove(new Integer(1))
?这可能会导致一些令人讨厌的错误.
在处理整数列表时,区分remove(int index)
哪个元素从给定索引remove(Object o)
中删除元素以及通过引用删除元素的正确方法是什么?
我有一个通用词典词典,我想基本上做一个克隆()的任何建议.
我想验证集合是否为空null
.谁能告诉我最好的做法.
目前,我正在检查如下:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
Run Code Online (Sandbox Code Playgroud) 关于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;
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,Java stdlibs中没有标准的实现,但可能是Apache Commons中的那个或类似的东西?
在Java中,我们可以执行以下操作
public class TempClass {
List<Integer> myList = null;
void doSomething() {
myList = new ArrayList<>();
myList.add(10);
myList.remove(10);
}
}
Run Code Online (Sandbox Code Playgroud)
但如果我们直接将其重写为Kotlin,如下所示
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
myList!!.add(10)
myList!!.remove(10)
}
}
Run Code Online (Sandbox Code Playgroud)
我从我的列表中得到了没有找到add
并remove
运行的错误
我努力将它转换为ArrayList,但这需要投射它是奇怪的,而在Java中不需要.这就违背了抽象类List的目的
class TempClass {
var myList: List<Int>? = null
fun doSomething() {
myList = ArrayList<Int>()
(myList!! as ArrayList).add(10)
(myList!! as ArrayList).remove(10)
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让我使用List但不需要投射它,就像在Java中可以做到的那样?
转换JSON代码的最佳方法是:
{
"data" :
{
"field1" : "value1",
"field2" : "value2"
}
}
Run Code Online (Sandbox Code Playgroud)
在Java Map中,其中一个键是(field1,field2),这些字段的值是(value1,value2).
有任何想法吗?我应该使用Json-lib吗?或者更好,如果我写自己的解析器?
在Java 8中,Stream.collect
允许对集合进行聚合.在Kotlin中,除了作为stdlib中的扩展函数的集合之外,它不以相同的方式存在.但目前尚不清楚不同用例的等价性.
例如,在JavaDocCollectors
的顶部是为Java 8编写的示例,当将它们移植到Kolin时,在不同的JDK版本上不能使用Java 8类,因此它们应该以不同的方式编写.
在网上显示Kotlin集合示例的资源方面,它们通常是微不足道的,并没有真正与相同的用例进行比较.什么是真正符合Java 8记录的案例的好例子Stream.collect
?那里的清单是:
以上链接的JavaDoc中的详细信息.
注意: 这个问题是由作者故意编写和回答的(自答案问题),因此对于常见问题的Kotlin主题的惯用答案存在于SO中.还要澄清为Kotlin的alphas写的一些非常古老的答案,这些答案对于当前的Kotlin来说是不准确的.
我想在我的Equals方法中比较几个集合的内容.我有一个词典和一个IList.有没有内置的方法来做到这一点?
编辑:我想比较两个字典和两个IList,所以我认为平等意味着什么是明确的 - 如果两个字典包含映射到相同值的相同键,那么它们是相等的.
collections ×10
java ×6
c# ×2
kotlin ×2
.net ×1
activerecord ×1
clone ×1
foreach ×1
generics ×1
java-8 ×1
java-stream ×1
json ×1
model ×1
overloading ×1
parsing ×1
queue ×1