我怎样才能改变我的arraylist?

时间:2015-07-21 15:00:41

标签: java arraylist javafx smack alter

我更多地搜索我的问题,但知道我想到了它,我需要改变arraylist。我看到了这个函数Collections.swap(list,x,y),这很酷,但前提是我想为其他元素更改一个元素。所以我需要一种方法来改变第一个位置,并让我的用户在这种条件下在线:

if(userpresence.getmode()==null&&userpresence.isAvailable()){
listItem.add(new contacts(name,user,icon))
}
if(userpresence.getmode()==null&&!userpresence.isAvailable()){
    listItem.add(new contacts(name,user,icon))
}

在这部分中,我按字母顺序显示列表:

    Collections.sort(listItem);

//I think the method about I tell you is in this part 

    ObservableList<Contacts> ob=FXCollections.observableArrayList(listItem);
    listview.setitems(ob);

这个想法是这样的:

user online
user online
user online
user online
user offline
user offline
user offline
user offline
user offline

但在这种情况下,只有我这样表现出来:

user offline
user offline
user offline
user offline
user offline
user online
user offline
user offline
user offline
user online
user offline
user offline
user offline
user online
user offline
user offline
user offline
user online
user offline
user offline
user offline
user online
user offline
user offline
user offline
user offline
user online
user offline
user offline

因为我试图进行比较并且没有显示出这种效果。 这是我的方法比较器:

public static Comparator<Contacts> contactsComparator=new Comparator<Contacts>(){
    @Override
    public int compare(Contacts c1, Contacts c2) {
        String ContactName1=c1.getName().toUpperCase();
        String ContactName2=c2.getName().toUpperCase();


        return ContactName1.compareTo(ContactName2);
    }
};

并在collections.sort我把它(arraylist,contacts.contactsComparator)

1 个答案:

答案 0 :(得分:4)

Collections.sort(list)仅在对象实现接口 java.lang.Comparable 时有效。否则,您还需要实现并将 java.util.Comparator 传递给sort方法。要么需要定义对象的排序顺序。