当我反复遍历ArrayList时,我得到一个IndexOutOfBoundsException.我尝试进行前向迭代,没有问题.我希望并知道列表中有五个元素.代码如下:
Collection rtns = absRtnMap.values();
List list = new ArrayList(rtns);
Collections.sort(list);
for(int j=list.size();j>0;j=j-1){
System.out.println(list.get(j));
}
Run Code Online (Sandbox Code Playgroud)
前向迭代 - 工作正常,但对我没用:
for(int j=0;j<list.size();j++){
System.out.println(list.isEmpty());
System.out.println(list.get(j));
} // this worked fine
Run Code Online (Sandbox Code Playgroud)
错误:
Exception in thread "Timer-0" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at model.Return.getReturnMap(Return.java:61)
at controller.Poller$1.run(Poller.java:29)
at java.util.TimerThread.mainLoop(Unknown Source)
at java.util.TimerThread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
此外,如果有人知道反向迭代更好的习语,我很乐意尝试这一点.
当我在ArrayList关键字上按f12转到从vs2008生成的元数据时,我发现生成的类声明如下
public class ArrayList : IList, ICollection, IEnumerable, ICloneable
Run Code Online (Sandbox Code Playgroud)
我知道IList已经从ICollection和IEnumerable继承了,那么为什么ArrayList会冗余地从这些接口继承呢?
是空的Arraylist(以null为其项)被视为null?所以,基本上下面的陈述是正确的:
if (arrayList != null)
Run Code Online (Sandbox Code Playgroud)
谢谢
可能重复:
如何在Java中获取ArrayList的容量?
如何找到一个容量ArrayList?
我有一个ArrayList,其中包含[ann,john]形式的值.我想将此ArrayList转换为{"ann","john"}形式的String数组.
我该怎么做?
我的Android代码:
final Button markabsent = (Button) findViewById(R.id.Button02);
markabsent.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
Toast.makeText(display.this,"You have marked the students absent",Toast.LENGTH_SHORT).show();
SparseBooleanArray checkedabsent = lView.getCheckedItemPositions();
for (int i = 0; i < arr2.length; i++)
{
if (checkedabsent.get(i))
{
items2.add(arr2[i]);
System.out.println(items2);
}
}
Log.d("", "items:");
for (String string : items2)
{
Log.d("string is", string);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的Logcat:
11-10 21:44:00.414: INFO/System.out(2316): [ann, john, ann]
11-10 21:44:00.414: DEBUG/(2316): items:
11-10 21:44:00.414: DEBUG/string is(2316): ann
11-10 …Run Code Online (Sandbox Code Playgroud) 我需要存储大量信息,例如java列表中的"名称".项目数量可以改变(或者简而言之,我不能预定义大小).我认为从内存分配的角度来看,LinkedList比ArrayList更好,对于ArrayList,一旦达到最大大小,内存分配自动加倍,因此总是有可能分配比内存更多的内存.需要什么.
我从其他帖子中了解到,存储在LinkedList中的各个元素比ArrayList占用更多空间,因为LinkedList也需要存储节点信息,但我仍然猜测我已定义的场景LinkedList可能是更好的选择.此外,我不想进入性能方面(获取,删除等),因为已经讨论过很多内容.
我搜索了一些主题,但没有找到解决我问题的方法.
public class Series implements Parcelable {
private String name;
private int numOfSeason;
private int numOfEpisode;
/** Constructors and Getters/Setters have been removed to make reading easier **/
public Series(Parcel in) {
String[] data = new String[3];
in.readStringArray(data);
this.name = data[0];
this.numOfSeason = Integer.parseInt(data[1]);
this.numOfEpisode = Integer.parseInt(data[2]);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringArray(new String[] { this.name,
String.valueOf(this.numOfSeason),
String.valueOf(this.numOfEpisode) });
}
private void readFromParcel(Parcel in) {
name = in.readString(); …Run Code Online (Sandbox Code Playgroud) 我有一个以下类型的hashmap
HashMap<String,ArrayList<Integer>> map=new HashMap<String,ArrayList<Integer>>();
Run Code Online (Sandbox Code Playgroud)
存储的值如下:
mango | 0,4,8,9,12
apple | 2,3
grapes| 1,7
peach | 5,6,11
Run Code Online (Sandbox Code Playgroud)
我想存储以及使用Iterator或任何其他方式使用最少的代码行获取那些整数.我该怎么办?
编辑1
当密钥与适当的行匹配时,数字随机添加(不在一起).
编辑2
添加时如何指向arraylist?
我18在行中添加新号码时收到错误map.put(string,number);
VARCHAR我的数据库中有一个字段,该字段的值为val1,val2,val3.
是否可以ArrayList<String>使用逗号作为拆分分隔符将其设置为实体的属性?
arraylist ×10
java ×6
android ×2
string ×2
arrays ×1
c# ×1
capacity ×1
collections ×1
hashmap ×1
hibernate ×1
inheritance ×1
interface ×1
iteration ×1
linked-list ×1
list ×1
parcelable ×1
reverse ×1