簡體   English   中英

如何使用Comparator和Iterator對Integer Vector進行排序?

[英]How to sort Integer Vector using Comparator and iterator?

我想創建Integer向量類型Vector並插入10個隨機數字。

然后,我想通過使用compareToVector進行排序,並發送兩個參數類型數字以對其進行比較。

但是我很想念 非常感謝您的幫助。

    import java.util.*;

public class SortNumeric implements Comparable<SortNumeric>
{
   private int ind =0;

   public static void main(String args[])
    {
        Vector<Integer> vec = new Vector<>();

        System.out.println("Befor sorting");
        for (int index = 0; index < 10; index++)
        {
            int rand = (int)(1000*Math.random());
            vec.add(rand);
             System.out.println(rand);
        }

        Arrays.sort(vec);

        System.out.println("After sorting");
        for(Integer intnum : vec)
         {
         System.out.println(intnum);
         }

    }

    public int getNextCompar(){
          if (vec.hasNext() && this.ind < 5){
            this.ind++;
            return vec.next();
        }else{return 0;}
     }

     public int compareTo(SortNumeric other)
            {
                return (int) (vec.next() - this.getNextCompar());

            }

}
class sortVectors implements Comparator<Integer>{

    @Override
    public int compare(Integer o1, Integer o2) {
        // TODO Auto-generated method stub
        if(o1<02){
            return -1;
        }else if(o1>o2)
            return 1;
            return 0;
    }
}
public class sortVector{
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         Vector<Integer> vect = new Vector<Integer>();
            System.out.println("Befor sorting");
            for (int index = 0; index < 10; index++) {
                int rand = (int) (1000 * Math.random());
                vect.add(rand);
                System.out.println(rand);
            }
        Collections.sort(vect,new sortVectors());
        System.out.println("After Sorting");
        for (Integer num : vect) {
            System.out.println(num);
        }

    }

}

如果要按特定順序對數組排序,則需要創建一個Comparator。

當您要在集合或數組中使用特定類別的對象時,可以使用Comparable。

在您的情況下,您需要使用比較器。

class MyComparator extends Compartor
{
  public int compare(Integer a, Integer b)
  {
            return a - b;
  }
}

在您的Main類中,調用Arrays.sort(vec,new MyComparator());。

您不需要實現Comparable for Integer ,因此不需要compareTo 還可以使用Collections.sort而不是Arrays.sort 這是修改后的代碼示例:

import java.util.Collections;
import java.util.Vector;

public class Main {
    public static void main(String args[]) {
        Vector<Integer> vec = new Vector<>();
        System.out.println("Befor sorting");
        for (int index = 0; index < 10; index++) {
            int rand = (int) (1000 * Math.random());
            vec.add(rand);
            System.out.println(rand);
        }

        Collections.sort(vec);

        System.out.println("After sorting");
        for (Integer intnum : vec) {
            System.out.println(intnum);
        }
    }
}

檢查此SO問題以獲取更多詳細信息:

可以使用什么功能對向量進行排序?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM