标签: arraylist

ArrayList indexOf()返回错误的索引?

我有ArrayList的问题.我正在使用像这样的ArrayList:

private ArrayList<Playlist> mPlaylists;
Run Code Online (Sandbox Code Playgroud)

其中播放列表是从另一个ArrayList继承的类.我做以下事情:

p = new Playlist(...some parameters...);
mPlaylists.add(p);
Run Code Online (Sandbox Code Playgroud)

后来,当我使用'p'来获取列表中的索引时:

int index = mPlaylists.indexOf(p);
Run Code Online (Sandbox Code Playgroud)

即使检查列表清楚地显示它的索引为'4',也会返回索引'1'.

有人知道为什么会失败吗?谢谢.

BR Morten

编辑: 没有indexOf()的相同问题,使用equals():

private int GetIndex(Playlist playlist) {
    for (int i = 0; i < mPlaylists.size(); i++) {
        if (mPlaylists.get(i).equals(playlist)) {
            return i;
        }
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

新编辑: 这个工作!:

private int getIndex(Playlist playlist) {
    for (int i = 0; i < mPlaylists.size(); i++) {
        if (mPlaylists.get(i) == playlist) {
            return i;
        }
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

解决方案: 正如建议的那样,我将Playlist类更改为不从ArrayList启用,而是将私有实例保留.事实证明,我只需要实现4个ArrayList方法.

这样做的伎俩; 现在indexOf()返回正确的对象! …

java android arraylist

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

如果在同一个集合上调用两次相同的迭代器会发生什么?

如果我为myList设置了一个迭代器:

Iterator iter = myList.iterator();
while(iter.hasNext())
{
    MyObj myObj = (MyObj)iter.next();
    doPrint(myObj.toString());
}
Run Code Online (Sandbox Code Playgroud)

我称之为第二次:

while(iter.hasNext())
{
    MyObj myObj = (MyObj)iter.next();
    doPrint(myObj.toString());
}
Run Code Online (Sandbox Code Playgroud)

我第二次打电话给它时会回到收藏的开头吗?

java collections iterator arraylist

9
推荐指数
2
解决办法
9236
查看次数

如何从字符串数组或arraylist创建一个字符串?

我如何提取字符串[]或arraylist中的所有元素,并将所有单词与它们之间的适当格式(具有单个空格)组合并存储在数组中.

String[] a = {"Java", "is", "cool"};
Run Code Online (Sandbox Code Playgroud)

输出:Java很酷.

java arrays string arraylist

9
推荐指数
2
解决办法
4万
查看次数

优化ArrayList.removeAll

很多人都说ArrayList.removeAll大尺寸阵列真的很慢.

该文章提供了两种优化的解决方案到ArrayList.removeAll速度,但需要在类中实现它们,并且不能在外部使用的修复.

有没有办法应用这种修复,而不是复制ArrayList源代码并使用我自己的版本?

编辑:我想我应该添加我对此的需求,因为如果没有ArrayList.removeAll,可能有办法做我想要的.

我有两个70,000 longs每个列表.它们几乎完全相同,但是一个列表中有第二个列表没有的更多数字,我想找到它们.我知道找到它们的唯一方法就是first.removeAll(second)找到差异.还有另外一种方法吗?

java arraylist removeall

9
推荐指数
1
解决办法
3598
查看次数

如何在VB.Net中将Array转换为ArrayList

我有一个数组,String我必须将其转换为ArrayList.是否有可能在VB.Net中做到这一点?

vb.net arrays arraylist

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

在Vector/ArrayList的上下文中,synchronized是什么意思?

我刚刚读了一些关于和的信息.从我所能理解的是与过时相比已经过时了.但是同步而不是.VectorArrayListVectorArrayListVectorArrayList

但是,这是什么意思?当我们说a Vector是同步的时候意味着什么?什么时候有用?

java synchronization vector arraylist

9
推荐指数
1
解决办法
6339
查看次数

打印出数组列表中的所有对象

可能重复:
如何以正确的方式打印对象内容?

我需要能够在我的数组列表中打印出Student对象(所有变量).这可能吗?当我尝试打印时输出这种东西,例如student.Student@82701e.我认为这是hexadecimal什么的

这是我的代码:

package student;

public class Student {

    private String studentName;
    private String studentNo;
    private String email;
    private int year;


    public Student() {
        this.studentName = null;
        this.studentNo = null;
        this.email = null;
        this.year = -1;
    }

    public Student(String nName, String nNum, String nEmail, int nYr) {
        this.studentName = nName;
        this.studentNo = nNum;
        this.email = nEmail;
        this.year = nYr;
    }

    public void setStudentName(String newStudentName) {
        this.studentName = newStudentName;
    }

    public void setStudentNo(String newStudentNo) {
        this.studentNo …
Run Code Online (Sandbox Code Playgroud)

java printing arrays arraylist

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

如何从列表中删除整数?

我需要从整数arraylist中删除整数.我对字符串和其他对象没有任何问题.但是当我删除时,整数被视为索引而不是对象.

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(300);
list.remove(300);
Run Code Online (Sandbox Code Playgroud)

当我试图删除300我得到: 06-11 06:05:48.576: E/AndroidRuntime(856): java.lang.IndexOutOfBoundsException: Invalid index 300, size is 3

java arraylist

9
推荐指数
3
解决办法
7323
查看次数

从列表中获取/删除第一个元素的有效方法?

我想取出并从列表中删除第一个元素.我可以看到,我有两个选择:

第一种方法:

LinkedList<String> servers = new LinkedList<String>();
....
String firstServerName = servers.removeFirst();
Run Code Online (Sandbox Code Playgroud)

第二种方法

ArrayList<String> servers = new ArrayList<String>();
....
String firstServerName = servers.remove(0);
Run Code Online (Sandbox Code Playgroud)

我的列表中有很多元素.

  • 我们应该使用哪种偏好?
  • 以上两者有什么区别?它们在性能方面在技术上是一样的吗?如果我们有很多元素,这里涉及的复杂性是多少?

什么是最有效的方法.

java collections linked-list list arraylist

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

如何在Collection中有条件地替换值,例如replaceIf(Predicate <T>)?

如果值为null,是否有任何简单的方法可以替换List或Collection中的值?

我们总是可以做list.stream().filter(Objects::nonNull);,也许可以将0添加回列表.

但我正在寻找的是像API一样的API list.replaceIf(Predicate<>).

java collections arraylist java-8

9
推荐指数
1
解决办法
6494
查看次数