2016-03-28 12 views
0

Ich habe ein string[] dynamische GrößeSplit dynamischer String [] in einem Array von fester Größe

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

so wird Größe zur Laufzeit bestimmt werden.

brauche ich String[] ein in feste Array-Größe aufzuteilen von 1000 sagen

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

Bitte helfen Sie mir dies zu erreichen.

+0

Arrays haben eine feste Größe. – Maroun

+0

@MarounMaroun Er meint vielleicht varargs was eine variable Länge hat –

+0

@YassinHajaj Könnte sein, aber es lohnt sich immer noch falsch Semantik zu korrigieren. – Maroun

Antwort

1

Sie können Arrays.copyOfRange verwenden wie dieses

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); 

aber es abstürzen, wenn die Länge von 'a' kleiner als 1000 ist, so können Sie diese

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); 

, wenn die Länge tun von ' a 'ist kleiner als 1000,' b 'hat die gleiche Größe wie' a ' , also wenn Sie immer die Größe von b 1000 haben möchten, müssen Sie' b 'mit der Länge von 1000

initialisieren

ant dann füllen sie in forcycle

+0

Wie kann ich die no von String [] b, c, d usw. dynamisch initialisieren sagen Größe von a = 3000 dann sollte ich 3 string [] b, c, d haben. – jack

+0

Wenn Sie eine dynamische Zählung von String [] b, c, d usw. wünschen, mit einer Länge von 1000 ... Sie benötigen zwei dynamische Saiten - String [] [] str = new String [a/1000] [1000] – Gandalf

1

Anstatt mehrerer Arrays kombinieren Sie sie in einem, zweidimensionalen Array. Jetzt

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++; 
    } 
} 

wenn Sie wollen, dann können Sie spalten, dass die zweidimensionale Anordnung in mehrere Arrays.

+0

Ist 'x <.length 'in Ihrer äußeren for-Schleife ein Tippfehler? – ManoDestra

+1

@ManoDestra Oh ja. Es tut uns leid. Bearbeiten Sie es. – Hackerdarshi

+0

Angenommen, a.length = 2954 dann ignoriert n das 954. Ich möchte die restlichen Datensätze in ein anderes String-Array aufteilen – jack

-1

Arrays.copyOfRange (boolean [], int, int) Der 2. int kann größer als die Länge des Arrays sein und wird auf die Länge zurückgesetzt.