我有以下代码段,负责阅读 JSON
文件并创建双向链接列表。我正在关注官方来源LinkedList
API
public void createVerticies() {
try {
List<Vertex> doublyLinkedList = Collections.synchronizedList(new LinkedList<Vertex>());
JSONObject jsonObject = new AssetsFileReader().readJsonInput(context, "data/stations_0.1.json");
JSONArray statArr = (JSONArray) jsonObject.get("stations_array");
for (int i = 0; i < statArr.length(); i++) {
JSONObject jObj = statArr.getJSONObject(i);
Vertex vertex = new Vertex();
vertex.setName(jObj.optString("name"));
vertex.setId(jObj.optInt("vertexId"));
vertex.setLat(jObj.optString("lat"));
vertex.setLng(jObj.optString("lng"));
vertex.setFunctional(jObj.optBoolean("isFunctional"));
vertex.setEndTerminal(jObj.optBoolean("isEndTerminal"));
vertex.setVertPrev(jObj.optInt("vertPrev"));
vertex.setVertNext(jObj.optInt("vertNext"));
doublyLinkedList.add(vertex.getId() - 1, vertex);
}
ListIterator<Vertex> listIterator = doublyLinkedList.listIterator();
while (listIterator.hasNext()) {
System.out.println(listIterator.next().getName());
}
ListIterator<Vertex> desListIt = doublyLinkedList.descendingIterator // Problem
} catch (JSONException e) {
e.printStackTrace();
}
}
然而 IDE 不允许我在这里使用降序迭代器:
ListIterator<Vertex> desListIt = doublyLinkedList.descendingIterator // Problem
我是否错过了创建 linkedlist
的方式?
答案 0 :(得分:2)
LinkedList
有一个descendingIterator
,但Collections.synchronizedList
会返回一个没有该方法的List
实现。
由于您使用LinkedList
封装了Collections.synchronizedList
实例,因此您无法再直接访问LinkedList
实例,也无法执行LinkedList
具体方法
因此,您无法拨打descendingIterator
。
那就是说,我不确定您使用Collections.synchronizedList
的原因,因为您的List
似乎没有被多个线程共享。
因此,也许你可以简单地改变
List<Vertex> doublyLinkedList = Collections.synchronizedList(new LinkedList<Vertex>());
到
LinkedList<Vertex> doublyLinkedList new LinkedList<Vertex>();