![]() |
Sorting an array list containing objects?
Dear all,
I have a class which contains an arraylist populated with other objects, for example: PrescriptionQueue - containing multiple instances of Prescription I have the need on my web page to display this data which I have done, however, now I would like to sort it based on a data item/direction selected by the user from the web page. I have separate data and display layers and was planning on doing my "sort" in my display layer. In order to do this I figured I would need to pull the Prescription objects back out from my PrescriptionQueue, perhaps pop them into a DataTable/View to make the sorting easier. I then wondered whether it would be better to try and sort the PrescriptionQueue itself. Got a little lost after this point :o) From what I've seen of the ArrayList.Sort you can do this quite easily: ArrayList.Add("Red") ArrayList.Add("Blue") ArrayList.Add("Green") ArrayList.Sort() etc, but thats based on the value directly inside those elements of the arraylist, is it possible to do something more like this: For Each Prescription In PrsecriptionQueue ArrayList.Add(Prescription) Next ArrayList.Sort(Prescription.PatientSurname) I appreciate the above example is probably not syntactically correct, so please excuse me, I am merely trying to give an example of what I would like to achieve. If anyone has any thoughts/suggestions as to doing this a better way I would be most grateful - another idea I had was requesting the sort order when I "get" my data in the first place. Any help appreciated, Regards Rob PS: Happy New Year! |
Re: Sorting an array list containing objects?
Look at the static method Array.Sort, you will have to break up your array
into 2 - one for keys and one for the corresponding values. It's not particularly trivial but you can write your own method to deal with it. Kev "Rob Meade" <ku.shn.tsews.thbu@edaem.bor> wrote in message news:%23o$hBJfFGHA.1528@TK2MSFTNGP10.phx.gbl... > Dear all, > > I have a class which contains an arraylist populated with other objects, > for example: > > PrescriptionQueue - containing multiple instances of Prescription > > I have the need on my web page to display this data which I have done, > however, now I would like to sort it based on a data item/direction > selected by the user from the web page. > > I have separate data and display layers and was planning on doing my > "sort" in my display layer. > > In order to do this I figured I would need to pull the Prescription > objects back out from my PrescriptionQueue, perhaps pop them into a > DataTable/View to make the sorting easier. > > I then wondered whether it would be better to try and sort the > PrescriptionQueue itself. > > Got a little lost after this point :o) > > From what I've seen of the ArrayList.Sort you can do this quite easily: > > ArrayList.Add("Red") > ArrayList.Add("Blue") > ArrayList.Add("Green") > > ArrayList.Sort() > > etc, but thats based on the value directly inside those elements of the > arraylist, is it possible to do something more like this: > > For Each Prescription In PrsecriptionQueue > > ArrayList.Add(Prescription) > > Next > > ArrayList.Sort(Prescription.PatientSurname) > > I appreciate the above example is probably not syntactically correct, so > please excuse me, I am merely trying to give an example of what I would > like to achieve. > > If anyone has any thoughts/suggestions as to doing this a better way I > would be most grateful - another idea I had was requesting the sort order > when I "get" my data in the first place. > > Any help appreciated, > > Regards > > Rob > PS: Happy New Year! > > |
Re: Sorting an array list containing objects?
..Sort accepts an IComparer that tells it how to compare.
arr.Sort(ctype(new UserComparer(), IComparer)) public class UserComparer implements IComparer public function Compare(x as object, y as object) as integer implements IComparer.Compare return string.Compare(ctype(x, user).Name, ctype(y, user).Name) end function end class Take a look at: http://msdn.microsoft.com/library/de...sorttopic2.asp Karl -- MY ASP.Net tutorials http://www.openmymind.net/ "Rob Meade" <ku.shn.tsews.thbu@edaem.bor> wrote in message news:%23o$hBJfFGHA.1528@TK2MSFTNGP10.phx.gbl... > Dear all, > > I have a class which contains an arraylist populated with other objects, > for example: > > PrescriptionQueue - containing multiple instances of Prescription > > I have the need on my web page to display this data which I have done, > however, now I would like to sort it based on a data item/direction > selected by the user from the web page. > > I have separate data and display layers and was planning on doing my > "sort" in my display layer. > > In order to do this I figured I would need to pull the Prescription > objects back out from my PrescriptionQueue, perhaps pop them into a > DataTable/View to make the sorting easier. > > I then wondered whether it would be better to try and sort the > PrescriptionQueue itself. > > Got a little lost after this point :o) > > From what I've seen of the ArrayList.Sort you can do this quite easily: > > ArrayList.Add("Red") > ArrayList.Add("Blue") > ArrayList.Add("Green") > > ArrayList.Sort() > > etc, but thats based on the value directly inside those elements of the > arraylist, is it possible to do something more like this: > > For Each Prescription In PrsecriptionQueue > > ArrayList.Add(Prescription) > > Next > > ArrayList.Sort(Prescription.PatientSurname) > > I appreciate the above example is probably not syntactically correct, so > please excuse me, I am merely trying to give an example of what I would > like to achieve. > > If anyone has any thoughts/suggestions as to doing this a better way I > would be most grateful - another idea I had was requesting the sort order > when I "get" my data in the first place. > > Any help appreciated, > > Regards > > Rob > PS: Happy New Year! > > |
Sort Objects in ArrayList, it is simple.
Nice !!!!!!!!
Try this too, sarangasl.blogspot.com/2009/10/sort-object-arraylist-in-c.html |
Sorting of ArrayList
Quote:
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Person implements Comparable{ String Last_Name=null; String First_Name=null; public Person(String F,String L){ this.First_Name=F; this.Last_Name=L; } public String getFirst_Name() { return First_Name; } public void setFirst_Name(String first_Name) { First_Name = first_Name; } public String getLast_Name() { return Last_Name; } public void setLast_Name(String last_Name) { Last_Name = last_Name; } @Override public String toString() { return Last_Name+", "+ First_Name+";"; } public int compareTo(Object obj) { // TODO Auto-generated method stub Person person= (Person) obj; int compareQuantity = Last_Name.compareTo( person.getLast_Name()); //ascending order return compareQuantity; } public boolean equals(Object obj) { if (!(obj instanceof Person)) { return false; } Person emp = (Person) obj; return First_Name.equals(emp.getFirst_Name()) && Last_Name.equals(emp.getLast_Name()); } public static void main(String arg[]){ ArrayList al=new ArrayList(); al.add(new Person("rom","couch")); al.add(new Person("james","boucher")); System.out.println("al is --->"+al); Collections.sort(al); System.out.println("al is --->"+al); } } class PersonComparator implements Comparator{ public int compare(Object obj1, Object obj2) { Person emp1 = (Person) obj1; Person emp2 = (Person) obj2; int nameComp = emp1.getLast_Name().compareTo(emp2.getLast_Name()) ; return ((nameComp == 0) ? emp1.getFirst_Name().compareTo(emp2.getFirst_Name( )) : nameComp); } } |
| All times are GMT. The time now is 07:49 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.