Solved

Sorting arrays

Posted on 2003-11-17
9
525 Views
Last Modified: 2010-03-31
I have an multidimensional array of Strings that I need to sort.  What is the fastest sorting algorithm that I can use to sort based on one column and what is the code?
0
Comment
Question by:sre23
  • 4
  • 4
9 Comments
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
The one in the API. Collections.sort(List l, Comparator c)
0
 
LVL 1

Author Comment

by:sre23
Comment Utility
ok, well in that case my question gets a little more complex.  I was hoping to just find a few methods that would do it and adjust them to fit my needs.  What I actually have is a DefaultTableModel with 10 columns and I need to sort this table on alphabetically on the 3rd column.  I looked in the API but I am a little confused on how to create a Comparator and List object.  Can you elaborate on that a little.  I've raised the points to 100 since my question has changed a little.
0
 
LVL 86

Accepted Solution

by:
CEHJ earned 100 total points
Comment Utility
class MyTableModel extends DefaultTableModel implements Comparator {

         int sortColumn;

         public void sortColumn(int sortColumn) {
              this.sortColumn = sortColumn;
              Collections.sort(dataVector,this);
         }

         public int compare(Object o1, Object o2)  {
              if (o1 == null) return -1;
              if (o2 == null) return 1;

              Vector vect1 = (Vector) o1;
              Vector vect2 = (Vector) o2;
              Comparable col1 = (Comparable) vect1.get(sortColumn);
              Comparable col2 = (Comparable) vect2.get(sortColumn);
              return col1.compareTo(col2);
         }

}
0
 
LVL 2

Expert Comment

by:dyanet
Comment Utility
Here is code that will do it.  You have to worry about making sure table is not updated while sorting, handling class cast and null, if there is a chance of that happening.  For regular alphabetic sorting, you do not need a comparator.  Post if you need a sample comparator.




javax.swing.table.DefaultTableModel table = new javax.swing.table.DefaultTableModel(10,10);

//load data
table.setValueAt("rasldkfj",0,2);
table.setValueAt("wqerpoiu",1,2);
table.setValueAt("nevernul",2,2);
table.setValueAt("aslgfwpo",3,2);
table.setValueAt("zasdflks",4,2);
table.setValueAt("bajklsdf",5,2);
table.setValueAt("oqpwiuir",6,2);
table.setValueAt("Adskfjwo",7,2);
table.setValueAt("Zasdflk9",8,2);
table.setValueAt("8slagjwi",9,2);

//create array
int ln = table.getRowCount();
String[] test = new String[ln];

//load array
for (int i=0;i<ln;i++) {
      if (table.getValueAt(i,2) == null)
            test[i]="";
      else test[i]=(String)table.getValueAt(i,2);
}

java.util.Arrays.sort(test);  // no comparator required for String, built-in alphabetic comparator.
      // can use non-casesensitive comparator etc.

// lets see
for (int i=0;i<test.length; i++) System.out.println(test[i]);

// good, set it

for (int i=0;i<test.length; i++) table.setValueAt(test[i],i,2);
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 1

Author Comment

by:sre23
Comment Utility
CEHJ, in your example how is the sort started? and what is dataVector?  And I assume that "this" can be replaced by the name of my DefaultTableModel?
0
 
LVL 1

Author Comment

by:sre23
Comment Utility
dyanet, your example looks as though it just sorts the 3rd column.  I need to sort my entire table ON the 3rd column.  I can't just reorder one column otherwise the whole table will be changed.  Each row needs to stay intact.
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
dataVector is a protected field of DTM:

http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/table/DefaultTableModel.html#dataVector

>>how is the sort started?

By calling sortColumn on the model. Just merge the code with your model
0
 
LVL 1

Author Comment

by:sre23
Comment Utility
Thanks again CEHJ
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
:-)
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
allStar challenge 1 41
strDist challenge 35 84
backtracking recursion  code 19 39
thymeleaf natural templating vs JSP 2 23
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
This theoretical tutorial explains exceptions, reasons for exceptions, different categories of exception and exception hierarchy.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

771 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

15 Experts available now in Live!

Get 1:1 Help Now