标签: arraylist

14
推荐指数
3
解决办法
4万
查看次数

在什么情况下System.Collections.ArrayList.Add会抛出IndexOutOfRangeException?

我们在生产环境中遇到了奇怪的错误,我们无法调试或注入日志代码.我试图解决这个问题但是跟踪堆栈跟踪让我感到困惑.

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at System.Collections.ArrayList.Add(Object value)
   at ...
Run Code Online (Sandbox Code Playgroud)

根据MSDN Add方法应该只抛出NotSupportedException.

我不知道这里发生了什么.你呢?

.net collections arraylist

14
推荐指数
3
解决办法
5853
查看次数

Android:如何从listView和arrayAdapter中删除项目

我有一个ArrayList中的项集合.我将它们添加到客户适配器,如下所示:

this.m_adapter = new MyAdapter(this, R.layout.myitem,
    itemCart.m_items);
Run Code Online (Sandbox Code Playgroud)

我的列表中的每个项目都有一个删除按钮,但我不知道如何将删除按钮onClick()与ArrayList中的原始项目连接.有人可以解释如何做到这一点或指向我的教程,我可以阅读这个?非讽刺/非居高临下的回应非常感谢.

android listview arraylist

14
推荐指数
3
解决办法
7万
查看次数

CopyOnWriteArrayList的替代方案,用于频繁写入,偶尔迭代

我有一个ArrayList将被缓存并无限期地跨多个线程共享.操作包括频繁的添加和删除,以及偶尔迭代它.

在ArrayList其管理访问它的包装类的生活:

public class MyListWrapper<T> implements Iterable<T> {

    private List<T> innerList = new ArrayList<T>();

    public Iterator<T> iterator() {
        return innerList.listIterator();
    }

    public void add(T element) {
        innerList.add(element);
        //app-specific logic
    }

    //remove(T), etc in the same pattern...
}
Run Code Online (Sandbox Code Playgroud)

我正在为线程安全做准备.起初,CopyOnWriteArrayList似乎是最好的答案,但它的性能令我担忧,因为修改将比其他任何事情更频繁.

手动更改为包装类是否会更好?

public Iterator<T> iterator() {
    return new ArrayList<T>(innerList).listIterator();
}

//plus concurrency tweaks for any non-atomic modifications to innerList
Run Code Online (Sandbox Code Playgroud)

请帮我找到最好的方法.

java concurrency arraylist

14
推荐指数
2
解决办法
2044
查看次数

使用数组列表的Android Spinner数据绑定

我有一个像这样的数组列表:

private ArrayList<Locations> Artist_Result = new ArrayList<Location>();
Run Code Online (Sandbox Code Playgroud)

此Location类有两个属性:id和location.

我需要将我绑定ArrayList到一个微调器.我这样试过:

Spinner s = (Spinner) findViewById(R.id.SpinnerSpcial);
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item, Artist_Result);
s.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

但是,它显示对象的十六进制值.所以我想我必须设置显示该微调控制器的文本和值.

data-binding android arraylist spinner android-arrayadapter

14
推荐指数
3
解决办法
5万
查看次数

我需要在arraylist中找到一个整数数据?

我有一个Arraylist.如果用户其次输入相同的号码,我想向用户显示.为此,我需要找到Arraylist或不.

我希望我清楚自己.

java arraylist

14
推荐指数
2
解决办法
6万
查看次数

哪个更有效:使用removeAll()或使用以下HashMap技术仅保留ArrayList中已更改的记录

我有2 ArrayList秒A和B相同的数据结构C(hashCode()和equals()重写).C代表学生的记录.这两个列表大小相同,分别代表新的学生记录和旧学生记录(学生在两个列表中都是相同的,排序可能不同).我希望只保留A中那些已被更改的记录.因此,我这样做:

 A.removeAll(B)
Run Code Online (Sandbox Code Playgroud)

根据javadoc,这将获取A的每个记录并与B的每个记录进行比较,如果它们两者都相等,它将从A中删除记录.如果未发现A的记录等于任何记录. B,因为A中的所有学生也在B中,这意味着A的记录已经改变.问题是它容易产生n平方的复杂性.

另一种方法可以是:

Map<C> map = new HashMap<C>();
for (C record : B){
    map.add(record.getStudentId(),record);
}
List<C> changedRecords = new ArrayList<C>();
for (C record : A){
    if (record.equals(map.get(record.getStudentId())){
        changedRecords.add(record);
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为这可能比上述解决方案的复杂性低.那是对的吗 ?

java performance arraylist hashmap removeall

14
推荐指数
1
解决办法
1万
查看次数

循环通过List android

我有以下方法:

 public List<String> getAllValue(){
       List<String> list = new ArrayList<String>();
       if(pref.getString(KEY_NUMBER1 , "").length()>2)
           list.add(pref.getString(KEY_NUMBER1 , ""));
       if(pref.getString(KEY_NUMBER2 , "").length()>2)
           list.add(pref.getString(KEY_NUMBER2 , ""));
       if(pref.getString(KEY_NUMBER3 , "").length()>2)
           list.add(pref.getString(KEY_NUMBER3 , ""));
       if(pref.getString(KEY_NUMBER4 , "").length()>2)
           list.add(pref.getString(KEY_NUMBER4 , ""));
       if(pref.getString(KEY_NUMBER5 , "").length()>2)
           list.add(pref.getString(KEY_NUMBER5 , ""));

       return list;
   }
Run Code Online (Sandbox Code Playgroud)

我现在需要做的是将这些数字(如KEY_NUMBER1)分配给以下内容editTexts:

EditText phoneNumber1, phoneNumber2, phoneNumber3, phoneNumber4, phoneNumber5;
Run Code Online (Sandbox Code Playgroud)

作为使用Lists的新手,我很难找到一种循环方式并为这些editTexts赋值,比如

phoneNumber1.setText(KEY_NUMBER1);
phoneNumber2.setText(KEY_NUMBER2);
phoneNumber3.setText(KEY_NUMBER3);
Run Code Online (Sandbox Code Playgroud)

java android list arraylist

14
推荐指数
1
解决办法
3万
查看次数

使用ArrayList或HashMap可以提高速度

我需要一个对象A的'List'或'Map',...这个列表将从另一个ArrayList中添加.当idA的参数等于时,对象A被认为等于另一个.

我的问题是我只想添加一个我的列表中不存在的对象.我想知道两种替代方案之间的实施.使用ArrayList或HashMap

1. ArrayList:

for (A a: source) {if (! (a in ArrayList)) addToArrayList();}

2. HashMap <id, A>

for (A a: source) {hasmap.put (a.id, a)}
Run Code Online (Sandbox Code Playgroud)

哪个会提供更好的速度来添加大量(超过1000个对象,或更大数量的对象)是否有一个更好的模式我的问题???

java performance arraylist hashmap

14
推荐指数
2
解决办法
5万
查看次数

为什么ArrayList不会覆盖equals()以获得更好的性能?

ArrayListequals从其父类继承实现,AbstractList这不是很有效.

它可以首先检查两个ArrayLists的大小,然后false如果这些大小不同则立即返回.为什么不这样ArrayList做?

java arraylist

14
推荐指数
2
解决办法
456
查看次数