【问题标题】:How to reverse an ArrayList [closed]如何反转 ArrayList [关闭]
【发布时间】:2014-08-28 11:29:16
【问题描述】:

我需要反转我的内容列表。我找到了Collections.reverse(temp);,但不知道如何正确实施。

private class MyFilter extends Filter {

    @Override
    protected FilterResults performFiltering(CharSequence constraint) {

        FilterResults oReturn = new FilterResults();
        ArrayList<Advice> results = new ArrayList<Advice>();

        if (orig == null)
            orig = list;

        if (constraint != null) {
            if (orig != null) {
                for (Advice d : orig) {
                    if ((d.getTitle() + " " + d.getText()).toLowerCase()
                            .contains(constraint.toString())) {
                        results.add(d);
                    }
                }
            }
        }

        list = results;

        return oReturn;
    }

    @Override
    protected void publishResults(CharSequence constraint,
            FilterResults results) {
        notifyDataSetChanged();
    }
}

【问题讨论】:

  • 使用什么类型的集合?
  • 你有收藏吗(前的数组列表)。你试过使用Collections.reverse(list);吗?
  • 至少发布您的列表代码。
  • 请告诉我们您如何尝试使用Collections.reverse()。这反转集合的正常方法,因此请向我们展示您如何尝试使用它并解释出现了什么问题。

标签: java android arrays sorting


【解决方案1】:

简单地说:

  // Create the list
  ArrayList<String> myList = new ArrayList<String>();

  // Add some items to it
  myList.add("one");
  myList.add("two");
  myList.add("three");

  // Reverse it by using Collections utilities.
  Collections.reverse(myList);

  Log.i("DEBUG", myList.get(0)); // Should print 'three' 

【讨论】:

  • 它不起作用,只有当我转到 POST 然后单击 Return 时。请显示我应该在我的代码中使用它的位置。谢谢
  • 这取决于你。您正在询问您的应用程序特定代码。我的回答完全符合您的要求。我们不知道什么是“POST”或“return”
【解决方案2】:

你应该导入

import java.util.Collections;

然后使用

Collections.reverse(results);

【讨论】:

  • 它不起作用,只有当我转到 POST 然后单击 Return 时。请显示我应该在我的代码中使用它的位置。谢谢
【解决方案3】:

如果你想添加符合条件的元素并且你没有java8或任何功能库,你可以在构造循环之后将其反转,或者在遍历之前将原始反转。或者只是在构建过程中以相反的顺序遍历它。使用索引的示例:

for(int i = orig.size()-1; i >-1; i--) {
    //add matching elements to the newly constructed list.
}

【讨论】:

    【解决方案4】:

    如下更改您的代码: 私有类 MyFilter 扩展过滤器 {

    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
    
        FilterResults oReturn = new FilterResults();
        ArrayList<Advice> results = new ArrayList<Advice>();
    
        if (orig == null)
            orig = list;
    
        if (constraint != null) {
            if (orig != null) {
                for (Advice d : orig) {
                    if ((d.getTitle() + " " + d.getText()).toLowerCase()
                            .contains(constraint.toString())) {
                        results.add(d);
                    }
                }
            }
        }
    
        Collections.reverse(results);
        oReturn.values = results;
        oReturn.count = results.size();
    
        return oReturn;
    }
    
    @Override
    protected void publishResults(CharSequence constraint,
            FilterResults results) {
        notifyDataSetChanged();
    }
    

    }

    希望对你有帮助

    【讨论】:

      【解决方案5】:

      解析器添加的最佳方式:

      Collections.reverse(data);
      System.out.println(data.toString());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-11
        • 2021-12-11
        • 2017-09-05
        • 1970-01-01
        • 2013-09-04
        相关资源
        最近更新 更多