How to sort a 2 dim. array by the first column?

Hi there,
I need to know, how to sort a 2 dim. String array by the first column, which means "string[0][x]".
I think, I have to implement a new comparator class. But how?
Thanks in advance for any help

I need to know, how to sort a 2 dim. String
array by the first column, which means
"string[0][x]".You want to sort the array using the first element in each row and that element is a String?
Let's forget about generics. Say you want to supply a Comparator. The compare method should decide the order between elements when passed two element objects. In a two-dimensional array the elements will be one-dimentional arrays and you use the first element in those arrays, like
public int compare(Object s1, Object s2) {
   String[] a1 = (String[]) s1;  // first row array
   String[] a2 = (String[]) s2;  // second row array
   return a1[0].compareTo(a2[0]); // compare first element of row arrays
}

Similar Messages

  • How to sort a 2 dim Array ?

    hello
    I would like to sort a 2-dim array of double ( double[][])
    according to the 1st column
    It is possible to sort a 1st dim array (doubel[]) , but the method sort
    of the class Array doesn't work with double[][]).
    I have two (bad) solutions.
    1) Writing a sorting method but I would prefer using the sort' method of java which uses quicksort
    2) Creating a table of objects that implements Comparable but this would decrease performance
    Do you have a better Idea ?
    Thanks a lot

    I would like to sort a 2-dim array of double (double[][]) according to the 1st column
    Which is the first "column"? double[0][x] or
    double[x][0]?
    If it's the second one things get simple: your
    double[][] is really an array of objects where each
    object is an array of doubles. So all you need to do
    is write a custom Comparator for double[] to use the
    sort method:
    compare(Object obj1, Object obj2) {
    double[] d1 = (double[]) obj1;
    double[] d2 = (double[]) obj2;
    return d1[0] > d2[0];
    }Thanks for your so prompt answer.
    I can manage to put the data so that I sort the array according to x as in double[x][0]?
    But WHERE do I have to write the "compare" method ?
    Thanks

  • HOW DO I ACHIEVE A TIME STAMP, IN THE FIRST COLUMN OF MY SPREADSHEET IN EXCEL,SHOWING THE TIME INTERVAL, INCREASED BY THE SCAN RATE ?

    FROM AI START VI TO FORMAT AND APPEND VI TO CONCATENATE STRINGS,SECOND INPUT IS TAB,THEN EVEY OTHER ONE IS TAB. THIRD AND FIFTH INPUT IS ATTACHED TO GET DATE/ TIME VI, THEN END OF LINE, THEN CHANNEL 0; TAB; CHANNEL 1;TAB, AND SO ON THROUGH CHANNEL 7. THEN THE LAST INPUT IS END OF LINE. ON THE SPREADSHEET I RECIEVE THE SCAN RATE, THEN THE DATE ,THEN THE TIME; ALL ON THE FIRST ROW. THE NEXT ROW HAS THE COLUMN LABLES, AND DATA GOES TO THE CORRECT COLUMN. BUT NO TIME STAMP COLUMN. I WOULD LIKE IT TO BE IN COLUMN "A" EVEN WITH THE FIRST ROW OF DATA. EX." 10:01:01 200 300 400
    10:01:03 200 300 400
    THANK YOU
    FOR YOUR HELP, JOE BOB CRAIN

    I think the best way is to generate an array of time values to send to your spreadsheet BEFORE channel 0 data.
    To generate the array you can use Ramp Pattern.vi from 0 to 'Actual Scan Rate' (from AI Start) * number of scans performed.
    That way in your spreadsheet you will have the first line same as now, next the columns with time(secs), channel 0, channel 1... channel 7.
    If you need the time column with date and time string, you can use Get Date/Time in Seconds.vi when you begin acquisition, then sum the seconds obtained to the array calculated as above and next use Format Date/Time String.vi to obtain the time stamp you need, next build array of time stamps and sent to your spreadsheet.
    Hope this helps
    Roberto
    Proud to use LW/CVI from 3.1 on.
    My contributions to the Developer Zone Community
    If I have helped you, why not giving me a kudos?

  • Sort a 2-dim array?

    Hello!
    Now we have the following problem: We need to sort a 2-dim array depending on the values in the first column. Then we need the corresponding row to move to the right place too... we send a VI so you can see an example of how it might look like. So we need (in this case) the first column to sort so we get 1,2 and 3 and so on, so the last row should be 3,4, 392 and 2047.
    We think this might be easy to solve but we need some tip :-) Thank you and best regards.
    Attachments:
    sortarray.vi ‏17 KB

    I wrote my own 2D string array sort routine. It has come in handy many times. You can enter the column number that you want to sort on, and the entire rows are rearranged in the order of the column sort. If your array is numeric, you can easily change the vi to use numerics instead. One day I hope to make it polymorphic. Here it is:
    - tbob
    Inventor of the WORM Global
    Attachments:
    Sort2DArray(str).vi ‏63 KB

  • Why can't anyone tell me how to remove all those little "!" in the left column all at once or at least sort them so I can mark them and then delete them?

    Why can't anyone tell me how to remove all those little "!" in the left column all at once or at least sort them so I can mark them and then delete them?

    This happens if the file is no longer where iTunes expects to find it. Possible causes are that you or some third party tool has moved, renamed or deleted the file, or that the drive it lives on has had a change of drive letter. It is also possible that iTunes has changed from expecting the files to be in the pre-iTunes 9 layout to post-iTunes 9 layout,or vice-versa, and so is looking in slightly the wrong place.
    Select a track with an exclamation mark, use Ctrl-I to get info, then cancel when asked to try to locate the track. Look on the summary tab for the location that iTunes thinks the file should be. Now take a look around your hard drive(s). Hopefully you can locate the track in question. If a section of your library has simply been moved, or a drive letter has changed, it should be possible to reverse the actions.
    Alternatively, as long as you can find a location holding the missing files, then you should be able to use my FindTracks script to reconnect them to iTunes.
    If, on the otherhand, you've been cleaning up your media from Explorer rather than iTunes and just want to eliminate the now broken links, use Tunes Folder Watch with its option to check for dead tracks on startup.
    tt2

  • When sorting a column of alphanumerical, how do I get them to stay sorted?  When I go to the next column, the first column mixes up.

    How do I get a column of alphanumerical to stay sorted?  When I go to the next column, my first column gets mixed up.

    For my purpose, I'll have to go back to Excel.
    What is your purpose?  Note that Numbers 3.0 does not have a multicolumn sort interface the way you have in Excel (or Numbers 2.3). But it is generally easy to accomplish what you need to do.
    Say you have a column A on which you want an alphanumerical sort and within that you want to sort by B (the equivalent of Excel's "Sort by" A "Then by" B).
    First do a single column sort by B. Then do a single column sort by A.
    SG

  • Does not do the sorting if I click twice to the same column.

    Hello
    I am new to winforms.
    I have a listview. I want it to toggle the sorting of the records of the listview when the columns are clicked
    Please guide me as to how to do the same.
    The code that I have attached does not do the sorting if I click twice to the same column. I have to click a different column ten the previous column 
    The code is attached below
    regards
    Manoj Gokhale
    private void SiteInChargeorSupervisor_Load(object sender, EventArgs e)
    this.listView1.ColumnClick += new ColumnClickEventHandler(listView1_ColumnClick);
    private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
    ListViewSorter Sorter = new ListViewSorter();
    listView1.ListViewItemSorter = Sorter;
    if (!(listView1.ListViewItemSorter is ListViewSorter))
    return;
    Sorter = (ListViewSorter)listView1.ListViewItemSorter;
    if (Sorter.LastSort == e.Column)
    if (listView1.Sorting == System.Windows.Forms.SortOrder.Ascending)
    listView1.Sorting = System.Windows.Forms.SortOrder.Descending;
    else
    listView1.Sorting = System.Windows.Forms.SortOrder.Ascending;
    else
    listView1.Sorting = System.Windows.Forms.SortOrder.Descending;
    Sorter.ByColumn = e.Column;
    listView1.Sort();
    public class ListViewSorter : System.Collections.IComparer
    public int Compare(object o1, object o2)
    if (!(o1 is ListViewItem))
    return (0);
    if (!(o2 is ListViewItem))
    return (0);
    ListViewItem lvi1 = (ListViewItem)o2;
    string str1 = lvi1.SubItems[ByColumn].Text;
    ListViewItem lvi2 = (ListViewItem)o1;
    string str2 = lvi2.SubItems[ByColumn].Text;
    int result;
    if (lvi1.ListView.Sorting == System.Windows.Forms.SortOrder.Ascending)
    result = String.Compare(str1, str2);
    else
    result = String.Compare(str2, str1);
    LastSort = ByColumn;
    return (result);
    public int ByColumn
    get { return Column; }
    set { Column = value; }
    int Column = 0;
    public int LastSort
    get { return LastColumn; }
    set { LastColumn = value; }
    int LastColumn = 0;

    Every time through the ColumnClick event handler, you are creating a new sorter. This means that any values set in the sorter from the previous click are not saved.
    Try this.
    private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
    // Only create a new sorter if we don't have one already.
    if(listView1.ListViewItemSorter == null)
    ListViewSorter Sorter = new ListViewSorter();
    listView1.ListViewItemSorter = Sorter;
    // And so on with the rest of your code.

  • How to add time informatio​n to the first column of spreadshee​t file?

    hi all.
    how to add time information to the first column of spreadsheet file?illustrated in the figure below。
    Solved!
    Go to Solution.

    You need to take the time data and convert it to double.  But Excel data is based on days since 1/1/1900 while LabVIEW data is based on seconds since 1/1/1904.
    Take a look at this thread for an example I posted on how to make the conversion.
    One other possibility is to convert your numeric data to a string, and build on an array of time that is also a string version of the timestamp.  Then write your 2-D string array to the Write to Spreadsheet file.

  • When I save my book in iBooksAuthor as .ibooks, it does not open on the Intro Media page.  How can I be sure it opens on the first page?

    When I save my book in iBooksAuthor as .ibooks, it does not open on the Intro Media page.  How can I be sure it opens on the first page?

    hello suffaman46, please refer to the documentation provided by yahoo for this issue: http://help.yahoo.com/kb/index?locale=en_US&y=PROD_ACCT&page=content&id=SLN2896

  • How do I increase the width of the first column in the Terminal ls -l command?

    I am now running 10.9.x, but I've experienced the problem described in the question over the last several iterations of OS X.
    I use bash as my interactive shell. When I display the "ls -l" command in Terminal the output is often very difficult for me to scan, because the columns in which are displayed the several fields of the records for the listed files are misaligned (different left-hand first-letter starting points for left-aligned text-valued fields; different right-hand low-digit alignment of numerical fields).
    When I look more closely at the mess displayed in my Terminal window, it appears that the cause of the problem may be that no minimum width, or an inadequate minimum width, has somewhere been set or defined for the first column of each record, containing the file's "mode" string (permissions, etc.); for all records in which this string is of equal length, the succeeding columns for all fields in those records are themselves aligned.
    It has not always been thus for me in the Terminal with OS X, or else I might not dream that the world could be a better place in this one respect. But if I launch an interactive csh-shell instead of bash in Mavericks today, the columns of the ls -l command there align no better.
    I've found no help in the Unix man pages for the ls command. There is a COLUMNS environment  variable whose value is supposed to be used by the ls command to set the width of every column displayed, but this is not what I want to do, and in my shell "ls -l" seems to ignore the exported variable anyway.
    There is also an LS_COLWIDTHS environment variable that is described as setting column widths on a field-by-field basis, at least for some fields, but the the mode column is not included among those whose width is supposed to be adjustable, and my shell seems to ignore the value of this variable as well.
    I've looked in my rather simple ~/.profile and ~/.bashrc files for anything that I might plausibly suspect of producing or perpetuating this behavior, but there is nothing there. Any suggestions about how to remedy this problem?
    Randy Miller

    John,
    I would like you to perform a safe boot. On reboot, press and hold the shift key at the chime, until the grey horizontal bar appears. After you type in your password, press and hold the shift key again, then click the right arrow to login, and release the shift key when your desktop appears. Move the contents of your local ~/Library/Caches into the Trash. Reboot normally. Empty your Trash.
    Re-evaluate your Terminal behavior. If it now works ok, great. Otherwise, here are a sequence of screen shots of my Terminal preferences for comparison. I can use both Courier fonts without formatting issues. Click to enlarge. I use the free IR Black Terminal theme as a personal choice in OS X 10.9.4. In my ~/.bashrc file (triggered from ~/.bash_profile), I export TERM=xterm-256color, and invoke /usr/bin/tput init. Click on the following images to enlarge.

  • (JTable) How can i get the first columns cell in a selected row?

    Hello. I am trying to figure out how i can get the first columns cell within a selected row no matter what cell is selected in that row. I have a class that extends AbstractTableModel which represents the table. Now i have another class that extends DefaultSelectionModel. Each model is added to the JTable via setModel(TableModel dataModel), setSelectionModel(ListSelectionModel newModel). Now i don't understand what i have to return from getMaxSelectionIndex(). Any ides? Thanks.
      class xTableModel extends AbstractTableModel{
         private static String[] cols;
         private Object[][] data;
            public void setTableModel(Object data[][], String[] cols){
             this.cols = cols;
             this.data = data;
            public String getColumnName(int col){
             return cols[col];
            public int getRowCount() {
             return data.length;
            public Object getValueAt(int row, int col) {
             return data[row][col];           
            public void setValueAt(Object value,int row,int col){
             data[row][col]=value;
            public int getColumnCount(){
             return cols.length;
    class ColumnListenerModel extends DefaultListSelectionModel{
         public int getMaxSelectionIndex(){}

    int row = table.getSelectedRow();
    Object data = table.getValueAt(row, 0);

  • How do I keep a custom letterhead on the first page in Pages 5

    How do I keep a custom letterhead on the first page in pages 5.  I made a custom template using text boxes and when the first page is full, the letterhead moves to the second page and disappears from the first page.  How can I keep it on the first page and not moving to the second page.
    hank

    Hi Hank,
    Text Box at the top of Page 1.
    Select the Text Box and
    Format Panel > Arrange > Object Placement > Stay on Page
    That will stop it moving (flowing) with the text.
    Top of Page 2
    Another way is to put your letterhead in the Page Header of Page 1. Insert a Section Break at the bottom of Page 1 (Click where you want the Section Break and
    Menu > Insert > Section Break).
    Click in Section 2, and
    Document Panel > Section > Headers & Footers > untick Match previous section
    Page 1 with letterhead in the Page Header
    Page 2
    Regards,
    Ian.

  • How do you print the numbers next to the first column

    In Numbers I can't figure out how to print the numbers next to the first column to the left. Say I have 350 people on a list and I want to print the sheet with the numbers next to the people's name, how do I do that. Excel automatically does it. However, I cannot find the option to print and include the numbers from the standard Numbers worksheet. Thanks for your assistance.

    In excel it is actually in the page setup dialog. under the "sheet" tab. Numbers doesn't have one table per page (excel is basically one large table of cells). So printing header and column labels doesn't really work in numbers, because those labels don't show up until you click inside the tables. If you notice when you do that they abstruct the view of everything else that might be near the edge of the table.
    The other posters response is the best way to do it. you can get column Numbers (but not letters) by using the column command in an extra row at top also. Thre is a way if you really want column letters, but it ain't pretty. Let us know if you want that too.
    Jason

  • Making JTable columns 2- n scrollable, not the first column, how?

    Id like for my JTable's first column to always be visible, and columns 2->n to be scrollable. The table also follows the sortable table model found from the swing examples...so if the user sorts any of the columns, all the other columns should sort accordingly.
    is there anyway i can separate the first column with the others, so that i can put them in their own scrollpanes (first column just scrolls up/down, and 2->n can scroll either way)?

    I only glanced at the example at the posted link... if memory servers, the trick was to create one JTable but with two different TableModels. To link the two models, you can simply make the getValueAt method in the fixed model call the getValueAt method of the non-fixed model. It's a bit tricky for beginner, but doable.
    ;o)
    V.V.

  • WPF: How to make the first column does not show row separator and Left column separator in DataGrid?

    Our WPF application uses DataGrid.
    One of request is that first column of DataGrid does not show row separator and also does not show Left column separator. So it looks like the first column does not belong to the DataGrid. However, when select a row, the cell of first column still get selected.
    How do we make it? Thx!
    JaneC

    Hi Magnus,
    Thanks for replying our question and provide your solution!
    Your solution works by setting "HorizontalGridLinesBrush" and "VerticalGridLinesBrush" to {x:Null} in the DataGrid style and modify "CellStyle" in first column as following:
    <DataGridTextColumn MinWidth="32"
    Binding="{Binding CellName}"
    CanUserReorder="False"
    CanUserSort="False"
    Header="Cell}"
    IsReadOnly="true" >
    <DataGridTextColumn.CellStyle>
    <Style TargetType="DataGridCell">
    <Setter Property="IsEnabled" Value="False"></Setter>
    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="{x:Type DataGridCell}">
    <Border BorderThickness="0" BorderBrush="{x:Null}"
    Background="{Binding Background, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}" Margin="-1">
    <Grid Background="{TemplateBinding Background}" VerticalAlignment="Center" Height="42">
    <ContentPresenter VerticalAlignment="Center"/>
    </Grid>
    </Border>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>
    </DataGridTextColumn.CellStyle>
    </DataGridTextColumn>
    We found another way to achieve it by using DataGridRowHeader. The good way to use DataGridRowHeader is that we do not need to make the first column ReadOnly (click on first column does not select whole row anymore). Select RowHeader in a row will select
    whole row. Move scroll bar horizontally, the row header still keep in visible area.
    <Style TargetType="{x:Type DataGridRowHeader}" x:Key="dataGridRowHeaderStyle">
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="HorizontalAlignment" Value="Center" />
    <Setter Property="Height" Value="42" />
    <Setter Property="SeparatorBrush" Value="{x:Null}" />
    <Setter Property="FontSize" Value="16" />
    <Setter Property="Template">
    <Setter.Value>
    <ControlTemplate TargetType="{x:Type DataGridRowHeader}">
    <Grid>
    <Border x:Name="rowHeaderBorder"
    BorderThickness="0"
    Padding="3,0,3,0"
    Background="{Binding Background, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"
    BorderBrush="{x:Null}">
    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
    VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
    SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
    </Border>
    </Grid>
    </ControlTemplate>
    </Setter.Value>
    </Setter>
    </Style>
    <DataGrid>
    <DataGrid.RowHeaderStyle>
    <Style TargetType="DataGridRowHeader" BasedOn="{StaticResource dataGridRowHeaderStyle}">
    <Setter Property="Content" Value="{Binding CellName}" />
    <Setter Property="Width" Value="35"/>
    </Style>
    </DataGrid.RowHeaderStyle>
    </<DataGrid>
    JaneC

Maybe you are looking for

  • Abap-java stack connectivity

    Hello, i have a BI 7 system - abap+java stack the java stack is supposed to be configured to work against client 001 in the abap system apperently this is not the case usually it is configured from the http://<host>:<port>/nwa ->identity management b

  • Cleaning up duplicates in iTunes library

    I just moved my iTunes folder 'offshore' to an external HD to which my MB Pro connects wifi via an Airport Extreme. It's working fine however when it copied over it made a bunch of duplicates. My question is this; is there an automated way to rid my

  • Photo Details and Names

    2nd week and one more problem with This Nokia 800  I have  taken Photos and can see them in Camera Roll and also saved as favorites No Problem  I know you can  not make albums on the Phone " Still wating for this one "  But my New problems are when y

  • Issue with Power management MSI Gforce GTX 770

    Hello, I contact you since I have bought one month ago a GForce GTX 770 I do not have the serial Number but could havez a look at it quickly if needed I have since the beginning recurrent issues with the graphic cards and require support. System Wind

  • Airport Dropping Off!

    Ever since I went to 10.4.8. I am experiencing at least one time per day that I drop off of airport and I must go to the top bar where airport is displayed next to the time and day click on the airport icon and click on default to reconnect to the ne