Ben listelerin listesi var.Birden çok listelerindeki öğelerin sayısını bulun ve birleştirin;/else kompleksi kaldırılsın mı?</p> <pre><code>List<List<String>> someList = new List<List<>>(); </code></pre> <p>bir liste maksimum boyutu beş dizeleri geçerli:
someList.get(0).size(); // 4 elements
someList.get(1).size(); // 1 elements
someList.get(2).size(); // 3 elements
someList.get(3).size(); // 1 elements
...
Yukarıda iç içe listelerin bazıları birleştirerek belirli boyut (1-5 elemanları) yeni bir liste oluşturmak için bir yöntem bulmak çalışıyorum: Aşağıda gibi bir şey. Ben büyüklüğü 1 üçünü bulmak için hiçbir Alt listeler, boyut 2'nin ise için döngü dahil etmedik
public List<String> getThree() {
for (int j = 0; j < someList.size(); j++) {
//look for nested lists of size 3
if (someList.get(j).size() == 3) {
return someList.get(j);
}
for (int j = 0; j < someList.size(); j++) {
//if found nested list of size 2, find one of size 1 to combine
if (someList.get(j).size() == 2) {
for (int k = 0; k < someList.size(); k++) {
if (someList.get(k).size() == 1) {
return someList.get(j).add(someList.get(k).get(0));
}
}
}
for (int j = 0; j < someList.size(); j++) {
//if found nested list of size 1, find one of size 2 to combine
if (someList.get(j).size() == 1) {
for (int l = 0; l < someList.size(); l++) {
if (someList.get(l).size() == 2) {
return someList.get(j).addAll(someList.get(l));
}
}
}
}
}
ancak hayal edebilirsiniz: I (bu örnekte, üç unsurun) altına böyle bir şey yapabileceğini ne kadar uzun ve ne kadar çirkin olabilir. Sıralama önemlidir, bu nedenle sıralı olarak artan ilmekler için (yani, altList 1 + 2'yi 2 + 3'den, 1 + 3'ten 2 + 3'den daha çok, vs. birleştirmeyi tercih ederim).
Bunu dinamik olarak uygulamak için bir yol bulmayı umuyorum. Sadece okunamayan ve uzun olan getFive
metodunun benim mevcut metodolojimi sağladığını anlayabiliyorum. Birden fazla yönteme sahibim (getOne aracılığıyla getFive), bu anlamda dinamik olmamıza gerek yok, sadece bir çok şeyden kurtulmak isterim ve karmaşıklığı azaltmak ve okunabilirliği artırmak için döngüler olsun. Bu ödevim ile ilgili olduğundan bahsetmeliyim, bu yüzden tam olarak belirli bir cevap istemiyorum, fakat doğru yönde bir dürtme istemiyorum. Belki bir şey modulo
? Kalanlarla mı?
edit; açıklık ve bir örnek elde edildi:
aList = new List<String>;
aList.add("a");
aList.add("b");
someList.add(aList);
bList = new List<String>;
bList.add("c");
someList.add(bList);
newList = someList.getThree();
//newList.size() == 3
//newList contains "a","b","c"
getThree()
yöntem someList
arasında sublists elemanların oluşan yeni bir listesini yaratıyor. Bir alt listeyi bölemez (yani, 2 elementin bir alt listesinden 1 element alamaz), tüm alt listeleri birleştirir.
Listeler listesini tek bir listeye dönüştürmeye mi çalışıyorsunuz? Bu hakkı anlıyor muyum? – Forseth11
Bir saat kadar beklemek zorundayım, ve eğer bu soruya cevap vermiyorsa, sana bir cevabım olduğunu düşünüyorum. – Forseth11
Hangi listeleri birleştirdiğiniz ve öğelerin hangi sırada olduğu önemli mi? {1, 3, 2, 4, 1} 'boyutlarına sahip myList öğeniz olduğunu ve sonuçta oluşan" size = 5 "listesinin olmasını istediğinizi, aşağıdaki kombinasyonların tümü çözüm olarak değerlendirdiğini varsayalım? {1 + 3 + 1}, {3 + 2}, {4 + ya da 1}. – mkobit