Java中ArrayList添加元素的时候可否乱序添加

List<E>list=newArrayList<E>();比如new了一个ArrayList,现在希望不是直接用add顺序加入元素,而是乱序,比如先在100的位置加入一... List<E> list = new ArrayList<E>();比如new了一个ArrayList,现在希望不是直接用add顺序加入元素,而是乱序,比如先在100的位置加入一个元素。可是即使我new的时候申请了足够的空间也会报溢出错误。请问怎样解决,或者其他什么数据类型可以这样乱序的添加。 展开
 我来答
百度网友85cd0964c
2012-02-22 · TA获得超过385个赞
知道小有建树答主
回答量:204
采纳率:0%
帮助的人:246万
展开全部
乱序的前提是你已经存在一个这样的内存空间,可以对其进行改动。建议自定义一个类比如叫newClass,这个类里包含一个index和一个E,然后你的ArrayList<newClass>,这样在这里面就可以存储你想要的信息,包括索引值(编号)以及你想要的其他信息。当然这个顺序可能是乱的,最后你就需要再通过起泡法(或叫冒泡法)重新排序即可
追问
这样啊、、可能跟我要的不同哎,不过谢谢
flyingFish211
推荐于2018-04-12 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
ArrayList有现成方法的,
add
public void add(int index,
E element)将指定的元素插入此列表中的指定位置。向右移动当前位于该位置的元素(如果有)以及所有后续元素(将其索引加 1)。

指定者:
接口 List<E> 中的 add
覆盖:
类 AbstractList<E> 中的 add
参数:
index - 指定元素所插入位置的索引。
element - 要插入的元素。
抛出:
IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index > size())。
追问
抛出: 
IndexOutOfBoundsException - 如果索引超出范围 (index size())。 就是这个,我new的时候size是0 而index>0。我用add(index, element)的时候就会报错,即使初始化的时候new ArrayList(200)比如这样 也还是会报错
追答
我看了一下ArrayList源代码, 原因在于构造方法里面,就算你指定了new ArrayList(200),但是Arraylist的size仍然为0,

所以index =100的时候,size仍然为0,所以会导IndexOutOfBoundsException

总结一下,对于ArrayList,当且仅当在list自身size范围内,也就是已经实实在在分配了内存后才能对已经存在的数组元素进行add

建议你直接用数组来实现
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
射箭之道
2012-02-22 · TA获得超过280个赞
知道小有建树答主
回答量:279
采纳率:100%
帮助的人:119万
展开全部
这个顺序问题你可以用Set啊,那东西没有顺序的。
如果一定要用list,可以用add(int index, E element)
方法。在list.size()的范围内,生成一个随机值就行了。
追问
其实本来是应该有顺序的,但是我是从map里面取出来再存到ArrayList里面的,所以取的时候顺序乱了,现在想按照原来的存往list里面,用add和set都是会报错的,边界溢出~
追答
map怎么会有顺序的?
如果你用Map的key部分, 用
Set keySet()
得到内容就行了,关键看你的Map的实现类了, 如果实现类是TreeMap,那保存Key的Set还是有顺序的。
如果你用value内容,
Collection values()
这个方法就直接得到了。没必要像你那样,一个个的取出来存进去的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
没有响应m2
2012-02-22 · TA获得超过8387个赞
知道大有可为答主
回答量:7579
采纳率:33%
帮助的人:3466万
展开全部
ArrayList又不是数组.. ArrayList只有在添加新数据的时候才会分配内存
所以你说那功能貌似实现不了..而且.这有啥意义??
直接用数组不是更好??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式