× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



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 thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

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.