2015-07-21 4 views
0

Я ищу больше о своей проблеме, но знаю, что я думал об этом, и мне нужно изменить архитектора. Я видел об этом fuctions Collections.swap (list, x, y), и это классно, но только если мне нравится менять один элемент на другой. Так я нужен метод, который изменит первые места и кладу пользователей онлайн с этим условием:Как я могу изменить свой arraylist?

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)) 
} 

в этой части я показать список сортировать aphabetically:

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)

+2

Есть ли у вас вопрос о том, как сортировать arraylist? Непонятно, что вы просите. Статический метод 'sort()' сортирует список с естественным упорядочением *. Естественный порядок определяется тем, что ваш класс (в данном случае «контакты») реализует интерфейс Comparable. – scottb

+0

не совсем потому, что у меня уже есть список заказов сейчас мне нужно поместить метод swap –

+0

Я не понимаю, что вы хотите сделать. – scottb

ответ

4

Collections.sort (список) работает только тогда, когда ваши объекты реализовать интерфейс Java .lang.Comparable. В противном случае вам необходимо реализовать и передать метод сортировки java.util.Comparator. Любой из них необходим для определения порядка сортировки для ваших объектов.

+0

Я реализую коллекцию.sort (arraylist), и это хорошо, мне нужно поместить другой метод для изменения позиций, и я думаю, что хороший способ - это метод swap, но i у меня много позиций, и мне нужно поставить пользователей онлайн в верхней части моего списка. –

+0

Я имел в виду класс контактов. Осуществляет ли он интерфейс Comparable (http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html)? Если вы не знаете, что я имею в виду, отправьте его код. И нет, вам не нужно вручную менять элементы в вашем списке. Collections.sort() делает это при правильном использовании. – emu