Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка Vector, java-методами 
:(
    Опции темы
Devorior
Дата 5.3.2003, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 1.8.2002
Где: Обнинск

Репутация: 1
Всего: 3



подскажите как методами Java отсортировать вектор String-значений? Непонятно как юзать класс Comparable и вообще надо его юзать?
PM MAIL ICQ   Вверх
AntonSaburov
Дата 5.3.2003, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Использовать статический метод
Collections.sort(List list)

Vector еализует интерфейс List, посему здесь надо его просто передать в метод.
А т.к. String уже реализует Comparable (т.е. они умеют сравниваться), то больше ничего и не надо.
Вообщем, вот пример

import java.util.Vector;
import java.util.Collections;

public class MyCl
{
public static void main(String[] args)
{
MyCl mc = new MyCl();
mc.ShowList();
}

public void ShowList()
{
Vector v = new Vector();
v.add("Jonson");
v.add("Buch");
v.add("Codd");
v.add("Caliostro");

System.out.println("Before sort");
System.out.println("***********");
for(int i=0; i<v.size(); i++) {
System.out.println((String)v.elementAt(i));
}

Collections.sort(v);

System.out.println();
System.out.println("After sort");
System.out.println("***********");
for(int i=0; i<v.size(); i++) {
System.out.println((String)v.elementAt(i));
}

}
}

А по поводу Comparable - идея в том, что ты для своего типа данных, который укладываешь в Vector, должен сделать реализацию интерфейса Comparable.
Если хочешь использовать отдельный сравниватель - делаешь класс, который реализует Comparator. Там всего по одному методу.
Эти методы определяют, как сравнивать объекты твоего класса.

PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 5.3.2003, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Вот тебе примерчик Comparator. Здесь строки сравниваются только по длине, потому и выводятся согласно длине, а не алфавиту biggrin.gif

import java.util.Vector;
import java.util.Collections;

import java.util.Comparator;


public class MyCl
{
public static void main(String[] args)
{
MyCl mc = new MyCl();
mc.ShowList();
}

public void ShowList()
{
Vector v = new Vector();
v.add("Jonson");
v.add("Buch");
v.add("Has");
v.add("Caliostro");

System.out.println("Before sort");
System.out.println("***********");
for(int i=0; i<v.size(); i++) {
System.out.println((String)v.elementAt(i));
}

Collections.sort(v, new MyComparator());

System.out.println();
System.out.println("After sort");
System.out.println("***********");
for(int i=0; i<v.size(); i++) {
System.out.println((String)v.elementAt(i));
}

}
}

class MyComparator implements Comparator
{
public int compare(Object obj1, Object obj2)
{
String a = (String) obj1;
String b = (String) obj2;

if(a.length()<b.length()) return -1;
if(a.length()==b.length()) return 0;
return 1;
}
}
PM MAIL WWW ICQ   Вверх
Devorior
Дата 6.3.2003, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 559
Регистрация: 1.8.2002
Где: Обнинск

Репутация: 1
Всего: 3



Anton, большое спасибо
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0450 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.