Solved

How do I arrange multi-dimensional array by the String date value (MM/dd/yyyy) of the sub-arrays?

Posted on 2007-12-03
10
232 Views
Last Modified: 2013-12-14
This question is very urgent.  I'm finalizing something that needs to be done in a few hours.  While I'm tinkering with it, I figured I would post it here.

I've got an multi-dimentsional arary that would expand out as follows:

People Array {
              0 =>  Array {
                                   0 => String:"Jon Doe"
                                   1 => String:"08/21/1980"
                                   2 => String:"OtherInfo1"
                                   3 => String:"OtherInfo2"
                                   4 => String:"OtherInfo3"
                                   }
              1 =>  Array {
                                   0 => String:"Jane Doe"
                                   1 => String:"09/11/1978"
                                   2 => String:"OtherInfo1"
                                   3 => String:"OtherInfo2"
                                   4 => String:"OtherInfo3"
                                   }
              2 =>  Array {
                                   0 => String:"Billy Doe"
                                   1 => String:"05/18/1992"
                                   2 => String:"OtherInfo1"
                                   3 => String:"OtherInfo2"
                                   4 => String:"OtherInfo3"
                                   }
}

Assume the data is already verified.  How do I put the People Array in order by Date (People[x][1])?  The data is received by the user and the length the the People array is undertermined.  So I'm thinking something along the lines of loop, but just not sure one the data best way to do the conversions.

Thanks in advance for any assistance.
0
Comment
Question by:VertigoRay
  • 6
  • 4
10 Comments
 
LVL 86

Expert Comment

by:CEHJ
ID: 20397317
Use Arrays.sort with a Comparator
0
 
LVL 2

Author Comment

by:VertigoRay
ID: 20397340
Man I butchered the heck out of the last paragraph.  Here's a re-write:

Assume the data is already verified.  How do I put the People Array in order by Date (People[x][1])?  The data is received by the user and the length the the People array is undetermined.  So I'm thinking something along the lines of loop, but I am just not sure what the best way to do the data comparisons.

~Ray
http://www.vertigion.com
0
 
LVL 2

Author Comment

by:VertigoRay
ID: 20397356
CEHJ:  Can you expand on that?   Maybe a link to an example?
0
 
LVL 2

Author Comment

by:VertigoRay
ID: 20397461
Before posting this, I had already found this in the docs:
http://java.sun.com/javase/6/docs/api/java/util/Arrays.html#sort(T[],%20java.util.Comparator)

I read through it and the link to the comparator (http://java.sun.com/javase/6/docs/api/java/util/Comparator.html), but I'm still not clear on how to compare them.  That's why I posted this (phishing for an example).

Thanks again for the time!
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 500 total points
ID: 20397513
The fact that you're writing procedural code (as opposed to OO) makes this trickier but the following should work:
Arrays.sort(array, new Comparator() {

	DateFormat df = new SimpleDateFormat("MM/dd/yyyy");

	public int compare(Object o1, Object o2) {

		String[] s1 = (String[])o1;

		String[] s2 = (String[])o2;

		try {

			return df.parse(s1[1]).compareTo(df.parse(s2[1]);

		} catch (ParseException e) {

			e.printStackTrace();

			return Integer.MIN_VALUE;

		}

	}

});

Open in new window

0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 2

Author Comment

by:VertigoRay
ID: 20398534
Forgot the closing ")" on the following line (fixed in my version:
return df.parse(s1[1]).compareTo(df.parse(s2[1]));

It is not working my particular code, but I think that it's something I need to work out.  I just need to fix a bug in my array creation which involves dynamically extending it.  I was under the impression that if I declared an array as shown below that it would dynamically expand the array as I in creased the value of the size.

The code below doesn't work ... but I was told that the logic of increasing the value of the "peopleCnt" should increase the length of the array.  The code below fails after the first pass.

Any thoughts?
int peopleCnt = 1;

String people[][];

people = new String[peopleCnt][];
 

for (<condition>)

{

   people[peopleCnt-1][0] = "<this String>";

   people[peopleCnt-1][1] = "<this String>";

   people[peopleCnt-1][2] = "<this String>";

   people[peopleCnt-1][3] = "<this String>";

   people[peopleCnt-1][4] = "<this String>";

   peopleCnt++;

}

Open in new window

0
 
LVL 2

Author Comment

by:VertigoRay
ID: 20398632
Correction ... line 3:
int peopleCnt = 1;

String people[][];

people = new String[peopleCnt][5];

 

for (<condition>)

{

   people[peopleCnt-1][0] = "<this String>";

   people[peopleCnt-1][1] = "<this String>";

   people[peopleCnt-1][2] = "<this String>";

   people[peopleCnt-1][3] = "<this String>";

   people[peopleCnt-1][4] = "<this String>";

   peopleCnt++;

}

Open in new window

0
 
LVL 86

Expert Comment

by:CEHJ
ID: 20399196
An array is inherently fixed size. You can't change it. You need to use a collection class if you want dynamic growth/shrinkage
0
 
LVL 2

Author Closing Comment

by:VertigoRay
ID: 31412390
I'll figure out collections.  I believe I'm out of bounds on the existing question, so I'll award you the earned points.  Thank you very much for your assistance!
0
 
LVL 86

Expert Comment

by:CEHJ
ID: 20399466
:-)
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Eclipse Neon start with Admin account only 6 89
bitbucket vs gitbucket 3 55
stackato and cloud 4 64
nextBoolean(double p) for Random class 3 35
Java had always been an easily readable and understandable language.  Some relatively recent changes in the language seem to be changing this pretty fast, and anyone that had not seen any Java code for the last 5 years will possibly have issues unde…
This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
This tutorial covers a practical example of lazy loading technique and early loading technique in a Singleton Design Pattern.
This video teaches viewers about errors in exception handling.

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now