এটি একটি পুরানো প্রতিক্রিয়া হতে পারে কিন্তু আমি একটি comparator যে সাজাতে হবে তৈরি করতে এই পোস্ট থেকে কিছু উদাহরণ ব্যবহার ArrayList
এর HashMap<String, String>
তালিকায় এক বস্তু দ্বারা, টাইমস্ট্যাম্প হচ্ছে যে।
আমার এই জিনিসগুলি রয়েছে:
ArrayList<Map<String, String>> alList = new ArrayList<Map<String, String>>();
মানচিত্রের অবজেক্টগুলি নিম্নরূপ:
Map<String, Object> map = new HashMap<>();
// of course this is the actual formatted date below in the timestamp
map.put("timestamp", "MM/dd/yyyy HH:mm:ss");
map.put("item1", "my text goes here");
map.put("item2", "my text goes here");
এই ম্যাপিংটি হ'ল আমি alList.add(map)
লুপের মধ্যে আমার সমস্ত বস্তুগুলি অ্যারের তালিকায় লোড করতে ব্যবহার করি ।
এখন, আমি আমার নিজস্ব তুলনামূলক তৈরি করেছি:
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
public class DateSorter implements Comparator {
public int compare(Object firstObjToCompare, Object secondObjToCompare) {
String firstDateString = ((HashMap<String, String>) firstObjToCompare).get("timestamp");
String secondDateString = ((HashMap<String, String>) secondObjToCompare).get("timestamp");
if (secondDateString == null || firstDateString == null) {
return 0;
}
// Convert to Dates
DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss");
DateTime firstDate = dtf.parseDateTime(firstDateString);
DateTime secondDate = dtf.parseDateTime(secondDateString);
if (firstDate.isAfter(secondDate)) return -1;
else if (firstDate.isBefore(secondDate)) return 1;
else return 0;
}
}
আমি এখন অ্যারেতে যে কোনও সময় কেবল তুলনাকারীকে কল করতে পারি এবং এটি আমার অ্যারে বাছাই করবে, আমাকে সর্বশেষতম টাইমস্ট্যাম্প 0 অবস্থানে (তালিকার শীর্ষে) এবং তালিকার শেষের দিকেতমতম টাইমস্ট্যাম্প দেয়। নতুন পোস্টগুলি মূলত শীর্ষে রাখা হয়।
Collections.sort(alList, new DateSorter());
এটি কাউকে সাহায্য করতে পারে, এজন্যই আমি এটি পোস্ট করেছি। তুলনা () ফাংশনের মধ্যে রিটার্নের বিবৃতি বিবেচনা করুন। এখানে 3 ধরণের ফলাফল রয়েছে। তারা সমান হলে 0 প্রত্যাবর্তন করছে> প্রত্যাবর্তন> 0 প্রথম তারিখ দ্বিতীয় তারিখের আগে হলে এবং ফিরে আসবে <0 প্রথম তারিখ দ্বিতীয় তারিখের পরে হলে। আপনি যদি চান যে আপনার তালিকার বিপরীত ঘটে, তবে কেবল সেই দুটি রিটার্নের বিবৃতি স্যুইচ করুন! সরল =]