import java.util.HashMap
import java.util.List
import java.util.Map
import java.util.Random
public class Demo {
static final int SIZE = 25
public static void main(String[] args) {
List<Point> list = new ArrayList<>(SIZE)
Random random = new Random()
System.out.println("开始生成点对象。。。")
for (int i = 0 i < SIZE i++) {
Point p = new Point()
p.setX(random.nextInt(5))
p.setY(random.nextInt(5))
list.add(p)
System.out.println(p)
}
System.out.println("生成点对象结束。。。")
Map<String, Integer> map = new HashMap<>()
for (Point point : list) {
String key = point.toString()
if (map.containsKey(key)) {
map.put(key, map.get(key) + 1)
} else {
map.put(key, 1)
}
}
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("节点:" + entry.getKey() + ",出现次数:" + entry.getValue())
}
}
}
class Point {
private int x
private int y
@Override
public String toString() {
return "[x=" + x + ", y=" + y + "]"
}
public int getX() {
return x
}
public void setX(int x) {
this.x = x
}
public int getY() {
return y
}
public void setY(int y) {
this.y = y
}
}
程序在执行list.add(2,"B")的时候就报错,因为还没有存在下标为1的值,而你直接插入下标为2的值。LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点:
*** 作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方
不能随即访问,虽然存在get()方法,所以这个方法是通过遍历接点来定位的速度慢。
说白了,就是数据结构中的顺序存储和链式存储
(转)
你仔细去看看各个集合的特点吧。都有自己的执行方式的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)