|
Hi Aaron, Vector is a dynamic java object and every time when you remove or adding element to a Vector - size attribute is being changed. Because your loop is defined based on the value of this attribute - you might skip some elements from sorting, or even lose them from the Vector. I would recommend before sorting - copy your Vector elements to an array as: IRGPerf[] arry = new IRGPerf[vAllCmp.size()]; vAllCmp.copyInto(arry); and then perform you sorting routine over an Array. After you done with sorting - copy an array to a new Vector object Alex Pinsky -----Original Message----- From: Bartell, Aaron L. (TC) [mailto:ALBartell@xxxxxxxxxxxxxx] Sent: Tuesday, February 17, 2004 10:17 AM To: 'Java Programming on and around the iSeries / AS400' Subject: Sorting a Vector by values with the objects I have been racking my head on the wall with this one. Everything in my mind says it should be working, but it doesn't come out with the right order and I seem to lose Vector elements in the process. I am trying to sort Objects in a Vector based on the value of one of the fields within each Object. Here is my sort routine and the class that the Objects in the Vector are instantiated from. I am sorting on field strNbr (Store Number). I have looked at other examples of sorting Vectors in some mailing list threads, but they are either sorting String objects or using the Comparator to sort a Vector. Neither of which seem to fit my scenario. Thanks for any input, Aaron Bartell for (i = 0; i <= vAllCmp.size() - 1; i++) { allCmp = (IRGPerf) vAllCmp.get(i); // The "(vAllCmp.size() - i)" is so you don't continue to sort objects // that have already been sorted. for (j = 0; j <= (vAllCmp.size() - i) - 2; j++) { IRGPerf temp = (IRGPerf) vAllCmp.get(j+1); // If the next element (temp) is less than the current element (allCmp), // do a swap. if (temp.strNbr < allCmp.strNbr) { vAllCmp.set(j, temp); vAllCmp.set(j + 1, allCmp); } } } class IRGPerf { String companyOrStore; int strNbr; int strErrCnt; int plntErrCnt; public int getPlntErrCnt() { return plntErrCnt; } public int getStrErrCnt() { return strErrCnt; } public void setPlntErrCnt(int i) { plntErrCnt = i; } public void setStrErrCnt(int i) { strErrCnt = i; } public int getStrNbr() { return strNbr; } public void setStrNbr(int i) { strNbr = i; } } _______________________________________________ This is the Java Programming on and around the iSeries / AS400 (JAVA400-L) mailing list To post a message email: JAVA400-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options, visit: http://lists.midrange.com/mailman/listinfo/java400-l or email: JAVA400-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/java400-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.