This week's book giveaway is in the Other Languages forum.We're giving away four copies of Functional Reactive Programming and have Stephen Blackheath and Anthony Jones on-line!See this thread for details.
Win a copy of Functional Reactive Programming this week in the Other Languages forum!

# sorting in vectors

Betsy Camel
Ranch Hand
Posts: 119
hi
i am having a vector. i want to store the first value in the vector as "A", second as "B" and third as "c".
The fourth value should again be set as "a" and so on.

eg

A[0] =vector.elementAt(0);
B[0]=vector.elementAt(1);
c[0]=vector.elementAt(3);
a[1]=vector.elementAt(4);
and so on... Please let me know how to do this.

Kartik Patel
Ranch Hand
Posts: 73
This is the code you want

import java.util.*;

class sortVector
{

public static void main(String args[])
{
Vector vect=new Vector();

System.out.println("Vector before sorting--"+vect);
Collections.sort(vect);
System.out.println("Vector before sorting--"+vect);

}

}

Betsy Camel
Ranch Hand
Posts: 119
I guess you have not understood the question i was asking. Please go through the question before you try to answer.

I am having a vector with values in it. the values have to be assigned

in this manner, depending on the size

a[0] = vector.elementAt[0];
b[0] =vector.elementAt[1];
and so on...where a & b are arrays or strings.

the fourth value from vector is again assigned to a[1].

Rajasekar Elango
Ranch Hand
Posts: 105
I guess simple modulus will do the trick..

eg: a[index % length] = vector.getElementAt(index)

Regards,
Raja.

Bear Bibeault
Author and ninkuma
Marshal
Posts: 65225
95
Please be sure to post questions in the appropriate forum. Moved to Java in General.

jiju ka
Ranch Hand
Posts: 308

i am having a vector. i want to store the first value in the vector as "A", second as "B" and third as "c".
The fourth value should again be set as "a" and so on.

eg

A[0] =vector.elementAt(0);
B[0]=vector.elementAt(1);
c[0]=vector.elementAt(3);
a[1]=vector.elementAt(4);

Your question is confusing. Sorry to say that. Let me ask you this

Are you asking how to distribute the values in vector among three arrays?

if so..

int collSize = vector.size();

arraySize = collSize/3 + 1; //not accurate though, consider size = 10

int[] a = new int[arraySize];
int[] b = new int[arraySize];
int[] c = new int[arraySize];
int aCount = bCunt = cCount = 0;

for each element in vector indexed by i; range 0 to size -1
{
currElement = vector.element at i;
if(i % 3 == 0)
{
a[aCount ++] = currElement;
}
else if (i % 3 == 1)
{
b[bCount ++] = currElement;
}
else
{
c[cCount ++] = currElement;
}

}

jiju ka
Ranch Hand
Posts: 308
As I said before the arraySize is not accurate.

arraySize = collSize/3 + 1; //not accurate though, consider size = 10

int[] a = new int[arraySize];
int[] b = new int[arraySize];
int[] c = new int[arraySize];

Below is a solution to compute right array size.
In case of 10 elements you need three arrays with 4, 3, 3 elements respectively
In case of 11 elements you need three arrays with 4, 4, 3 elements respectively
In case of 12 elements you need three arrays with 4, 4, 4 elements respectively

So the ArraySize can be different for all arrays.
Say aArraySize, BArraySize, cArraySize

After dividing the size by 3 you get a fraction,
If this fraction is zero (3/3), aArraySize = bArraySize = cArraySize = size/3;
If this fraction is .33 (1/3) or less than .5
aArraySize = size/3 + 1; bArraySize = cArraySize = size/3;
If this fraction is .66(2/3) or greater than .5
aArraySize = bArraySize = size/3 + 1; cArraySize = size/3;

To find the fraction you can do

fraction = size/3 - (int)size/3

[ December 21, 2005: Message edited by: jiju ka ]
[ December 21, 2005: Message edited by: jiju ka ]