View Full Version : سوال: مرتب کردن فایل متنی بر اساس یک ستون
sajjad4563
شنبه 18 مرداد 1393, 16:26 عصر
با سلام
فرض کنید این فایل من هست:
654 7
895 5
239 5
784 3
215 7
میخوام سطرهای این فایل رو بر اساس اعداد تک رقمی که هر سطر داره، مرتب کنم، یعنی اینجوری بشه:
654 7
215 7
895 5
239 5
784 3
روش کار چیه و از چی باید استفاده کنم؟
با تشکر.
محمد فدوی
شنبه 18 مرداد 1393, 17:28 عصر
کار ساده ای هست. برای اینکار از Collections.sort استفاده کن. فرض کنیم فایلت به نام data.txt هستش. این برنامه رو ببین:
// File SortPractice.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
class Item {
private int first, second;
public Item(String line) {
String[] factors = line.split(" ");
first = Integer.parseInt(factors[0]);
second = Integer.parseInt(factors[1]);
}
public int getFirst() { return first; }
public int getSecond() { return second; }
@Override
public String toString() {
return String.format("%d %d", first, second);
}
}
public class SortPractice {
public static void main(String[] args) {
ArrayList<Item> data = new ArrayList<>();
String line;
try (FileReader fr = new FileReader("D:\\Path\\To\\Data\\data.txt");
BufferedReader br = new BufferedReader(fr)) {
System.out.print(" Before Sort:\n--------------\n");
// READ DATA:
while ((line = br.readLine()) != null) {
System.out.println(line);
data.add(new Item(line));
}
// SORT DATA:
Collections.sort(data, (item1, item2) -> {
int f1 = item1.getFirst(), s1 = item1.getSecond(),
f2 = item2.getFirst(), s2 = item2.getSecond();
if(s1 > s2) {
return -1;
} else if(s1 < s2) {
return +1;
} else if(f1 > f2) {
return -1;
} else if(f1 < f2) {
return +1;
} else {
return 0;
}
});
System.out.print("\n After Sort:\n-------------\n");
// DISPLAY SORTED DATA:
data.forEach(System.out::println);
} catch (IOException ioex) {
System.out.println("Cannot read Data! :(");
}
}
}
برای اجرای این کد باید Java 8 رو نصب داشته باشی وگرنه باید برنامه رو طوری تغییر بدی که توش از قابلیت های جدید Java 8 استفاده نشه.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.