【问题标题】:How to sort a Vector of String in java-me?如何在 java-me 中对字符串向量进行排序?
【发布时间】:2011-07-04 09:13:40
【问题描述】:

我有一个整数向量(数据库表的主键);我实现了一个方法,它根据这个主键整数返回一个字符串。我的问题是我想将这些字符串放入 Vector 中,并且它们在 Vector 中“排序”。如何实现这种 String 排序?

【问题讨论】:

  • 嘿伙计们,他要求 java-me。 Java-me 从不支持集合。
  • @Andy:第一次明确提出问题。因为每个人都认为您是在用 java 提问。尝试正确发布。

标签: java java-me sorting


【解决方案1】:

使用以下代码在 java-me 中对向量进行排序。

public Vector sort(Vector sort) {
        Vector v = new Vector();
        for(int count = 0; count < e.length; count++) {
            String s = sort.elementAt(count).toString();
            int i = 0;
            for (i = 0; i < v.size(); i++) {
                int c = s.compareTo((String) v.elementAt(i));
                if (c < 0) {
                    v.insertElementAt(s, i);
                    break;
                } else if (c == 0) {
                    break;
                }
            }
            if (i >= v.size()) {
                v.addElement(s);
            }
        }
        return v;
    }

【讨论】:

    【解决方案2】:

    您可以使用TreeSet,它将使字符串保持排序顺序,或者在返回它们之前使用类似的东西:

    Collections.sort(yourVector);
    

    另一种选择是要求数据库按主键排序。让数据库完成工作。

    您的查询可能返回的不仅仅是主键。我想知道您为什么要在 String 和主键的原始级别上处理事情。我敢打赌,您在对象方面的思考还不够。在有主键的地方,其他数据应该紧随其后。我会将它们全部封装在一起并担心对那些对象进行排序。

    为什么是Vector?我更喜欢ArrayList,因为它默认不同步。更好的性能。

    【讨论】:

      【解决方案3】:

      您需要通过实现Comparator 接口来实现自己的比较器。

      这样的事情应该可以解决问题:

      Collections.sort(vect, new Comparator() {
        public int compare(Object a, Object b) {
          return ( new Integer(((MyClass) a).getNumber()) ).compareTo( new Integer(((MyClass) b).getNumber()));
        }
      });
      

      取自here

      【讨论】:

      • OP 没有指定键的排序方式,我发布了这个,以防默认的方法不起作用。
      【解决方案4】:

      将向量传递给静态方法Collections.sort(vector) 不确定您希望它如何排序,但此方法将根据向量中包含的对象的自然顺序进行排序,由每个对象的compareTo 方法给出。

      Collections API 或许可以进一步帮助您。

      【讨论】:

        【解决方案5】:

        如果是Java,你在找吗

        Collections.sort(vector);
        

        ?

        【讨论】:

          【解决方案6】:

          Vector 比 ArrayList 慢,因为它是一个线程安全的集合。

          但是排序操作不是线程安全的。因此,要以线程安全的方式对向量进行排序,您需要对其进行同步。

          synchronized(vector) {
              Collections.sort(vector);
          }
          

          如果您不需要集合是线程安全的,请考虑使用 ArrayList。

          【讨论】:

            【解决方案7】:
            import java.util.Vector;
            import java.util.Collections;
            
            public class SortJavaVectorExample {
            
            public static void main(String[] args) {
            
            //create Vector object
            Vector v = new Vector();
            
            //Add elements to Vector
            v.add("1");
            v.add("3");
            v.add("5");
            v.add("2");
            v.add("4");
            
            /*
              To sort a Vector object, use Collection.sort method. This is a
              static method. It sorts an Vector object's elements into ascending order.
              */
            Collections.sort(v);
            
            //display elements of Vector
            System.out.println("Vector elements after sorting in ascending order : ");
            for(int i=0; i<v.size(); i++)
            System.out.println(v.get(i));
            
            }
            }
            

            【讨论】:

            【解决方案8】:

            您可以使用 Collections 类,它将使字符串保持排序顺序,或者在返回它们之前使用类似的东西:

            如果您想按升序对其进行排序,请仅使用

            Collections.sort(把你的....LIST/ARRAYLIST/VECTOR OBJECT HERE);

            如果您想按降序对其进行排序,请仅使用

            ** Collections.sort(把你的....LIST/ARRAYLIST/VECTOR OBJECT HERE);** ** Collections.reverse(把你的....LIST/ARRAYLIST/VECTOR OBJECT HERE);**

            【讨论】:

              猜你喜欢
              • 2015-02-09
              • 2016-07-29
              • 2012-10-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-03-15
              • 2010-10-10
              相关资源
              最近更新 更多