چھانٹنا مشکل ہو سکتا ہے، خاص طور پر اگر آپ کی فہرست میں ابتدائی عددی ڈیٹا کی اقسام کے بجائے
پھر ہم انٹرفیس کے نفاذ کی وضاحت کرتے ہیں
List
آبجیکٹ ریپرز ( Byte
, Integer
, Short
, Long
, Double
, ) شامل ہوں۔ Float
میں ایک ایسا طریقہ استعمال کرنے کا مشورہ دیتا ہوں جو آسان مسائل کو حل کرنے یا انٹرویو لینے والے کے سوال کا جواب دینے کے لیے بہت مفید ہو سکتا ہے۔ سب سے پہلے، آئیے اس بات کا انتخاب کریں کہ ہم کیا بھریں گے List
۔ Edges
اس مثال میں میں ایک سادہ ڈیٹا ڈھانچے سے گراف کناروں کی فہرست استعمال کروں گا ( Graph
)
// Очень простой класс Edge (рёбро графа)
public class Edge {
public Vertex src;
public Vertex dst;
public double cost;
// создание ребра между двух вершин
Edge(Vertex s, Vertex d, double c) {
src = s;
dst = d;
cost = c;
}
}
// Список рёбер
Edge[] edges = graph.getEdges();
گراف کیا ہے؟ مجرد ریاضی میں، ایک گراف کو سیٹوں کے ایک جوڑے کے طور پر بیان کیا جاتا ہے ( شاید، جو لوگ ریاضی کے تجرید کے عادی نہیں ہیں، ان کے لیے ایسی تعریف زیادہ واضح نہیں ہو گی، تو آئیے اسے مزید آسانی سے کہتے ہیں: گراف عمودی اور کناروں کا مجموعہ ہے جو ان کو جوڑتا ہے۔ گراف کی ایک اچھی مثال جو اسے فوری طور پر تجرید کے دائرے سے مواد کے دائرے تک لے جائے گی، ریلوے پٹریوں کا نقشہ ہے۔ اس طرح کے گراف کے عمودی سٹیشن ہیں ۔ ٹھیک ہے، ان کے درمیان راستے کنارے ہیں . |
java.util.Comparator
:
class SortByCost implements Comparator<Edge> {
public int compare(Edge a, Edge b) {
if ( a.cost < b.cost ) return -1;
else if ( a.cost == b.cost ) return 0;
else return 1;
}
}
اس مثال میں، ہم گراف کے کناروں کو ان کے وزن کے لحاظ سے، یا vertex src (ماخذ) سے vertex dst (منزل) کے فاصلے کے حساب سے ترتیب دیں گے۔ آخر میں، ہم معیاری طریقہ استعمال کرتے ہیں java.util.Arrays.sort ()
:
Arrays.sort(edges, new SortByCost())
اب اشیاء سے بھری ہوئی ہماری شیٹ کو Edges
صعودی ترتیب (سب سے چھوٹی سے بڑی تک) ترتیب دیا گیا ہے۔ حل کے مصنف ایتھن آررووڈ ہیں۔
GO TO FULL VERSION