2016-03-28 23 views
0

bir diziye Dinamik boyutta bir string[]Bölünmüş dinamik dize [] sabit boyutta

String[] a = {'','',....dynamic values} 

çok boyutlu zamanında tespit edilir sahiptir. 1000

String[] b = {first 1000 values of a} 
String[] c = {next set of 1000 values of a} 

söylemek ait

ben Tür bana bunu başarmak yardımcı sabit dizi boyutu String[] bir bölmek gerekir.

+0

Diziler sabit bir boyuta sahiptir. – Maroun

+0

@MarounMaroun O belki değişken uzunluk –

+0

@YassinHajaj olabilir varargs olabilir, ama yine de yanlış semantik düzeltmeye değer. – Maroun

cevap

1

Bu

String[] a = {"a","b","c","d","r","g","f","h", ...}; 

    String[] b = Arrays.copyOfRange(a, 0, 1000, String[].class); 
    String[] c = Arrays.copyOfRange(a, 1000, a.length, String[].class); 

gibi Arrays.copyOfRange kullanabilirsiniz ama uzunluğu 'a' küçük 1000'den yüzden bu

int range = (a.length < 1000) ? a.length : 1000; 

    String[] b = Arrays.copyOfRange(a, 0, range, String[].class); 
    String[] c = Arrays.copyOfRange(a, range, a.length, String[].class); 

'uzunluğu ise yapabileceği ise çökmesine '1000'den küçük olan' b ',' a ' gibi aynı boyuta sahiptir, bu yüzden her zaman b 1000 boyutuna sahip olmak istiyorsanız, 1000

String[] b = new String[1000](); 

karıncaya kadar doldurun orcycle

+0

dize [] b, c, d vb diyelim ki a = 3000 büyüklüğünü söyleyemiyorum. 3 dize [] b, c, d olmalıdır. – jack

+0

Eğer dize [] b, c, d, vb. Dinamik sayısının 1000 uzunluğuna sahip olmasını istiyorsanız, iki boyutlu dizgeye ihtiyacınız var - String [] [] str = new String [a/1000] [1000] – Gandalf

1

Birden çok dizi yerine bunları bir iki boyutlu dizisiyle birleştirin.

int n = (int)Math.ceil(a.length/1000d); 
String str[][] = new String[n][1000]; //Two dimensional array 
int x=0; 
for(int i=0; i<n; i++) 
{ 
    for(int j=0; j<1000 && x<a.length; j++) 
    { 
     str[i][j] = a[i]; 
     x++; 
    } 
} 

Şimdi isterseniz, bu iki boyutlu diziyi birden fazla diziye ayırabilirsiniz.

+0

Dıştan içe döngünün içinde bir x yazım hatası var mı? – ManoDestra

+1

@ManoDestra Oh evet. Afedersiniz. Düzenleme. – Hackerdarshi

+0

a.length = 2954 varsayalım ve n 954'ü görmezden geliyor. Geri kalan kayıtları başka bir dizilim dizisine bölmek istiyorum – jack

-1

Arrays.copyOfRange (boolean [], int, int) 2. int, dizinin uzunluğundan daha büyük olabilir ve geriye doğru yuvarlanacaktır.