Java'daki Hashtable'ım bir değerin tuple yapısına sahip olmasından fayda sağlayacaktır. Bunu yapmak için Java'da hangi veri yapısını kullanabilirim?
Hashtable<Long, Tuple<Set<Long>,Set<Long>>> table = ...
Java'da genel amaçlı bir tuple sınıfı olduğunu sanmıyorum, ancak özel bir tane aşağıdaki kadar kolay olabilir:
public class Tuple<X, Y> {
public final X x;
public final Y y;
public Tuple(X x, Y y) {
this.x = x;
this.y = y;
}
}
Elbette, özellikle de örnekleri karma için anahtar olarak kullanmayı planlıyorsanız, bu sınıfın eşitlik, değişmezlik vb. açısından nasıl tasarlanacağına ilişkin bazı önemli çıkarımlar vardır.
Burada'maerics'in ima ettiği daha sağlam bir equals',
hash' içeren başka bir yerde tam olarak aynı soru var:
Bu tartışma, "belirli olmayan bir isme sahip bir Tuple sınıfını yeniden kullanmalı mıyım, yoksa bu durumla her karşılaştığımda belirli isimlerle yeni bir sınıf mı oluşturmalıyım" şeklindeki maerics ve ColinD yaklaşımlarını yansıtmaya devam ediyor. Yıllar önce ikinci kamptaydım; birincisini destekler hale geldim.
Aslında modellediğiniz kavramı tanımlayan bir sınıf oluşturun ve bunu kullanın. Sadece iki Set
saklayabilir ve bunlar için erişimciler sağlayabilir, ancak bu kümelerin her birinin tam olarak ne olduğunu ve neden birlikte gruplandıklarını belirtecek şekilde adlandırılmalıdır.