我了解这LinkedList
是作为双重链接列表实现的。它在add和remove上的性能优于Arraylist
,但在get和set方法上却较差。
这是否意味着我应该选择LinkedList
在Arraylist
插入?
我写了一个小测试,发现ArrayList
插入速度更快。那如何链表比ArrayList
?
请参考下面的示例。
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
public class TestLinkedList {
public static void main(String[] args) {
long lStartTime = new Date().getTime();
System.out.println("lStartTime:: " + lStartTime);
List<Integer> integerList = new LinkedList<Integer>();
for (int i = 0; i < 10000000; i++) {
integerList.add(i);
}
long lEndTime = new Date().getTime();
System.out.println("lEndTime:: " + lEndTime);
long difference = lEndTime - lStartTime;
System.out.println("Elapsed milliseconds: " + difference);
}
}
Linkedlist确实在插入时速度更快,问题出在您的示例中。在您的代码中,您一直都需要附加到末尾。对于ArrayList,它与LinkedList一样容易。您应该做的是建立一个包含5000个项目的列表,然后开始在中间插入。在这里数组变慢了-
您必须一直将数组其余部分移到插入位置之后。这将显示出差异。分析事物的工作原理,不难理解原因。这是修改后的代码:
import java.util.Date;
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.List;
public class Prob {
public static void main(String[] args) {
long lStartTime = new Date().getTime();
System.out.println("lStartTime:: " + lStartTime);
List<Integer> integerList = new LinkedList<Integer>();
for (int i = 0; i < 5000; i++) {
integerList.add(0, i);
}
for (int i = 0; i < 100000; i++) {
integerList.add(1000, i);
}
long lEndTime = new Date().getTime();
System.out.println("lEndTime:: " + lEndTime);
long difference = lEndTime - lStartTime;
System.out.println("Elapsed milliseconds: " + difference);
}
}
我了解到是作为双链表实现的,它在添加和删除上的性能比好,但在get和set方法上的性能更差。 这是否意味着我应该选择而不是来插入? 我写了一个小测试,发现插入速度更快,那么链表怎么比快呢? 请参考下面我所做的例子。
我读到这些方法返回值的规则是,对于obj1.compareTo(ob2),例如,如果ob2在层次结构中位于ob1之下,则返回值为负值,如果它位于ob1之上,则返回值为正(如果它等于,则返回值为0)。然而,在我的类中,我看到了使用Math.signum在compareTo方法中获得-1(表示负值)和1(表示正值)的示例。 有什么原因吗? 编辑: 以下是我的意思:
问题内容: 我正在比较JSON和BSON用于序列化对象。这些对象包含多个大量整数的数组。在我的测试中,我要序列化的对象包含大约12,000个整数的总数。我只对序列化结果的大小比较感兴趣。我正在使用JSON.NET作为进行序列化的库。我使用JSON是因为我也希望能够在Javascript中使用它。 JSON字符串的大小约为43kb,BSON结果的大小为161kb。差异因子约为4。这不是我所期望的,因
问题内容: 我想知道哪个更快:XML和JSON?什么时候使用哪一个? 问题答案: 在回答何时使用哪一个之前,有一点背景知识: 编辑:我应该提到,这种比较实际上是从在具有JavaScript的浏览器中使用它们的角度来看的。这也不数据格式的方法 有 被使用,并且有很多很好的解析器,这将改变细节,使我在说什么不是很有效的。 JSON既更紧凑,又(在我看来)更具可读性-在传输中,仅因为传输的数据较少,它就
问题内容: 假设我需要使用按某些域逻辑排序的元素。通过这种逻辑,不相等的元素的顺序无关紧要,因此compare方法可以返回0,但是在这种情况下,我不能将它们放入。 所以,问题是:这样的代码有什么缺点: 更新 : 好。如果它应该永远是方法之间的一致性,并且,作为@SPFloyd - seanizer和其他人说。如果我删除接口并移入此逻辑是否会更好甚至更好(我可以在不破坏封装的情况下做到这一点)?因此
list和str两种类型数据,有不少相似的地方,也有很大的区别。本讲对她们做个简要比较,同时也是对前面有关两者的知识复习一下,所谓“温故而知新”。 相同点 都属于序列类型的数据 所谓序列类型的数据,就是说它的每一个元素都可以通过指定一个编号,行话叫做“偏移量”的方式得到,而要想一次得到多个元素,可以使用切片。偏移量从0开始,总元素数减1结束。 例如: >>> welcome_str = "Welc