Java ArrayList以1开头,不是0?
我正在用Java ArrayList以1开头,不是0?,java,arraylist,Java,Arraylist,我正在用ff代码从DB检索一些数据: List<modelA> list= new ArrayList<modelA>(); list = modelA.getList(parameter); list.size()=3和list[0]不存在 我将列表转移到LinkedHashSet以正确设置索引,但它不起作用。名单还是一样 Set<modelA> hs = new LinkedHashSet<>(); hs.addAll(list); list
ff
代码从DB
检索一些数据:
List<modelA> list= new ArrayList<modelA>();
list = modelA.getList(parameter);
list.size()=3
和list[0]
不存在
我将列表转移到LinkedHashSet以正确设置索引,但它不起作用。名单还是一样
Set<modelA> hs = new LinkedHashSet<>();
hs.addAll(list);
list.clear();
list.addAll(hs);
modelA类中的方法getList返回一个生成的列表。它构建列表的方式可以是任何东西。它甚至可以在99位启动
因此,您需要检查/修复对象如何放置在modelA类的列表中。似乎
getList
方法返回一个违反API的list
实现(假设列表是java.util.list)。的api指定,如果index==List.size()
,则所有列表实现都应引发IndexOutOfBoundsException。
您可以创建您选择的特定类型的列表(例如ArrayList),并将断开列表的内容放入您创建的列表中:
List<modelA> list= new ArrayList<modelA>(modelA.getList(parameter));
并尝试修复断开列表类的实现。但是,如果其他地方的代码依赖于此列表实现的基于1的索引,这可能会有风险。您确定
liste.size()
的大小是3而不是4吗?什么是modelA.getList?返回的列表实现可能使用基于非零的索引,但List[0]
的值是多少null
?发布更多有助于解决问题的代码。大小为3,没有索引0。modelA.getList是一个JPA模型是否无法使用java修复列表,因为我不允许接触该模型?因此,您唯一的可能性是在使用列表之前删除第一个元素。尽管如此,这似乎不是一个真正的问题。请注意不要使用列表的第一个元素。
java.lang.NullPointerException
at applicationmodels.f08.pv.F08PV008Model.search(F08PV008Model.java:221)
at controllers.f08.pv.F08PV008.control(F08PV008.java:148)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$99$$anonfun$apply$99.apply(routes_routing.scala:1510)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$99$$anonfun$apply$99.apply(routes_routing.scala:1510)
at play.core.Router$HandlerInvoker$$anon$7$$anon$2.invocation(Router.scala:183)
at play.core.Router$Routes$$anon$1.invocation(Router.scala:377)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:56)
at play.db.jpa.TransactionalAction$1.apply(TransactionalAction.java:20)
at play.db.jpa.TransactionalAction$1.apply(TransactionalAction.java:18)
at play.db.jpa.JPA.withTransactionAsync(JPA.java:177)
at play.db.jpa.TransactionalAction.call(TransactionalAction.java:15)
at play.core.j.JavaAction$$anon$3.apply(JavaAction.scala:91)
at play.core.j.JavaAction$$anon$3.apply(JavaAction.scala:90)
at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82)
at play.core.j.FPromiseHelper$$anonfun$flatMap$1.apply(FPromiseHelper.scala:82)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251)
at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:249)
at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32)
at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:37)
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:42)
at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:386)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
list = modelA.getList(parameter);
List<modelA> list= new ArrayList<modelA>(modelA.getList(parameter));
System.out.println(modelA.getList(parameter).getClass().getName());