'da birleştiriyorum Bir kimlik tarafından birleştirilmesi gereken iki büyük veri kümesini (milyonlarca kayıt) işlemek için RxJava'yı kullanıyorum. Bu iki veri kümesi mutlaka aynı kayıtları içermiyor. Ancak kimlikleri tarafından sıralanır.İki büyük veri kümesini RxJava
join
yönteminin bunun için kullanılabileceğini ve aşağıdaki denemenin "tam birleştirme" yaptığını ve eşleşen kayıtlarla filtreleneceğini anladım.
public class BatchTest
{
public static void main (String[] args)
{
Observable<Integer> myLeft = Observable.just (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Observable<Integer> myRight = Observable.just (1, 3, 5, 7, 9);
myLeft.join (
myRight,
new Func1<Integer, Observable<Integer>>()
{
public Observable<Integer> call (Integer aT)
{
return Observable.never();
}
},
new Func1<Integer, Observable<Integer>>()
{
public Observable<Integer> call (Integer aT)
{
return Observable.never();
}
},
new Func2<Integer, Integer, Integer[]>()
{
public Integer[] call (Integer aT1, Integer aT2)
{
return new Integer[] {aT1, aT2};
}
})
.filter (new Func1<Integer[], Boolean>()
{
public Boolean call (Integer[] aT)
{
return aT[0].equals (aT[1]);
}
})
.subscribe (new Action1<Integer[]>()
{
public void call (Integer[] aT)
{
System.out.printf ("%d, %d\n", aT[0], aT[1]);
}
});
}
}
Bu, küçük bir dizi örnek için iyi çalışır, ancak büyük bir set için çok verimsizdir.
Bu yüzden sorum şu: Klavyeyi görmek, bu seçici/pencereleme işlevlerinin katılımı sınırlamak için kullanabileceği bir yol olduğundan, 3 milyona 3 milyon kayıt yaptırmak zorunda değilim. kayıtlar? Ya da ben hep birlikte yanlış şekilde yapıyorum?