ورود

View Full Version : سوال: مرتب کردن لیست تو در تو



heidari177
سه شنبه 30 دی 1393, 22:00 عصر
سلام
لطفا جواب بدید چون واقعا دارم روانی میشم :اشتباه:
من یه لیست دارم به صورت: [name, point,time] که اینها در یک فایل ذخیره میشن. نتیجه میشه فایلی با مثلا 100 تا لیست 3 خونه ای
میخوام فردی که کمترین point و کمترین time رو داره پیدا کنم
لطفا یه راهنمایی کنید که چطور بر اساس دو عنصر مرتب کنم تا بهترین پیدا بشه

heidari177
سه شنبه 30 دی 1393, 22:52 عصر
جداّ همیشه انقدر دیر جواب میدید؟ :متفکر:

[younes]
چهارشنبه 01 بهمن 1393, 02:44 صبح
به نظر من از حلقه های تو در تو و آرایه چند بعدی استفاده کنید

ahmad.mo74
چهارشنبه 01 بهمن 1393, 12:52 عصر
سلام. سوالتون خیلی واضح نیست ولی برداشت من این بود که مثلا 100 تا بازیکن داریم که براساس امتیاز و زمان میخوایم بهترین رو پیدا کنیم.
اولویت رو میزاریم روی امتیاز. اگر کسی امتیازش کمتر بود بهتره (برعکسش درست تره فکر کنم :)) در غیر اینصورت اگر امتیازش مساوی با شخص دیگه ای بود هر کدوم زمان کمتری داشت بهتره.

اگر به دید آبجکت بهشون نگاه کنیم بهتره. از TreeSet برای مرتب سازی استفاده میکنیم :


import java.util.TreeSet;


/**
* @author avb
*/
public class Player implements Comparable<Player> {


private String name;
private float point;
private long time;


public Player(String name, float point, long time) {
this.name = name;
this.point = point;
this.time = time;
}


public String getName() {
return name;
}


public void setName(String name) {
this.name = name;
}


public float getPoint() {
return point;
}


public void setPoint(float point) {
this.point = point;
}


public long getTime() {
return time;
}


public void setTime(long time) {
this.time = time;
}


@Override
public String toString() {
return name;
}


@Override
public int compareTo(Player o) {
int compare = Float.compare(point, o.point);
return compare > 0 || compare == 0 && time >= o.time ? 1 : -1;
}


public static void main(String[] args) {
TreeSet<Player> players = new TreeSet<>();
players.add(new Player("a", 1.2f, 10));
players.add(new Player("b", 1.1f, 18));
players.add(new Player("c", 1.3f, 14));
players.add(new Player("d", 2.2f, 13));
players.add(new Player("e", 1.5f, 15));
players.add(new Player("f", 1.3f, 16));
System.out.println(players);
System.out.println("Best Player : " + players.first());
}


}