如何按照字母顺序对数组列表进行排序?

12 浏览
0 Comments

如何按照字母顺序对数组列表进行排序?

我正在尝试根据名称按字母顺序对包含类型、名称、URL和日期的数组列表进行排序。我从Browser.BookmarkColumns中提取了信息,除了类型外。

之前:

默认浏览器    谷歌     www.Google.com     14/12/2013
默认浏览器    BBC        www.BBC.com        13/12/2015
默认浏览器    亚马逊     www.Amazon.com     11/11/2014

之后:

默认浏览器    亚马逊     www.Amazon.com     11/11/2014
默认浏览器    BBC        www.BBC.com        13/12/2015
默认浏览器    谷歌     www.Google.com     14/12/2013

这是我尝试过的代码,但它没有起作用。

 int j = mCur.getCount();
 String[] mType = new String[j];
 String[] mTitles = new String[j];
 String[] murls = new String[j];
 long[] date = new long[j];
 for (int q=0; q<(j-1); q++) {
                String a = (mTitles[q]).toLowerCase();
                String b = (mTitles[q+1].toLowerCase());
                char[] c = a.toCharArray();
                char[] d = b.toCharArray();
                String temp, temp2, temp3 = null;
                long temp4 = 0;
                int lenc = c.length;
                int lend = d.length;
                int min =0;
                int count =0;
                if (lenc < lend)
                    min = lenc;
                else
                    min = lend;
                    if (c[count] > d[count]) {
                        temp = mTitles[count];
                        temp2 = mType[count];
                        temp3 = murls[count];
                        temp4 = date[count];
                        mTitles[count] = mTitles[count + 1];
                        mType[count] = mType[count + 1];
                        murls[count] = murls[count + 1];
                        date[count] = date[count + 1];
                        mTitles[count + 1] = temp;
                        mType[count + 1] = temp2;
                        murls[count + 1] = temp3;
                        date[count + 1] = temp4;
                    } else if (c[count] == d[count]) {
                        for (int w = 1; w < min; w++) {
                            if (c[w] > d[w]) {
                                temp = mTitles[w];
                                temp2 = mType[w];
                                temp3 = murls[w];
                                temp4 = date[w];
                                mTitles[w] = mTitles[w + 1];
                                mType[w] = mType[w + 1];
                                murls[w] = murls[w + 1];
                                date[w] = date[w + 1];
                                mTitles[w + 1] = temp;
                                mType[w + 1] = temp2;
                                murls[w + 1] = temp3;
                                date[w + 1] = temp4;
                            }
                        }
                    }
            }

0
0 Comments

如何将一个数组列表按照字母顺序从A到Z排序?

在上述内容中,问题的原因是需要对一个数组列表按照字母顺序进行排序。为了解决这个问题,我们可以使用Java的Collections类的sort方法来对数组列表进行排序。

首先,我们需要创建一个自定义的数组列表,并添加一些元素。在这个例子中,我们创建了一个名为UserContainer的类,并定义了它的属性name和date。然后,我们创建了一个ArrayList对象userList,并将一些UserContainer对象添加到其中。

接下来,我们使用Collections类的sort方法对userList进行排序。我们传递了一个实现了Comparator接口的匿名内部类作为参数,该接口定义了compare方法来比较两个UserContainer对象的name属性。比较方法使用了compareToIgnoreCase方法来忽略大小写进行比较,从而实现了按照字母顺序进行排序。

最后,我们可以通过遍历userList来打印排序后的结果。

代码如下:

private ArrayList<UserContainer> userList=new ArrayList<UserContainer>();
UserContainer usercontainer=new UserContainer()
usercontainer.name=Amazon;
usercontainer.date=11/11/2014;
userList.add(usercontainer);
UserContainer usercontainer2=new UserContainer()
usercontainer.name=Google;
usercontainer.date=11/11/2014;
userList.add(usercontainer);
UserContainer usercontainer3=new UserContainer()
usercontainer.name=BBC;
usercontainer.date=11/11/2014;
userList.add(usercontainer);
Collections.sort(userList, new Comparator<UserContainer>() {
        public int compare(UserContainer s1, UserContainer s2) {
            return s1.name.compareToIgnoreCase(s2.name);
        }
    });

public class UserContainer {
public String name = "";
public String date = "";
}

希望这可以帮助到你。

0
0 Comments

如何将一个数组列表按照字母顺序从A到Z排序?

在上面的回答中,提供了Java中高效排序数组列表的最佳示例。之前,请阅读上面提到的回答的描述。

我简化了上面的答案,以便更好地理解,并提供了您所需的精确输出。

ArrayList userList = new ArrayList<>();
userList.add(new UserContainer("www.Google.com", "Google", "14/12/2013"));
userList.add(new UserContainer("www.BBC.com", "BBC", "13/12/2015"));
userList.add(new UserContainer("www.Amazon.com", "Amazon", "11/11/2014"));
Log.i("Before Sorting :", "==========================>>");
for (UserContainer obj : userList) {
    System.out.println("Default Browser: \t" + obj.name + "\t" + obj.date + "\t" + obj.webSite);
}
Collections.sort(userList, new Comparator() {
    public int compare(UserContainer first, UserContainer second) {
        return first.name.compareToIgnoreCase(second.name);
    }
});
Log.i("After Sorting :", "==========================>>");
for (UserContainer obj : userList) {
    System.out.println("Default Browser: \t" + obj.name + "\t" + obj.date + "\t" + obj.webSite);
}

模型类:

public class UserContainer {
    public UserContainer(String webSite, String name, String date) {
        this.webSite = webSite;
        this.name = name;
        this.date = date;
    }
    public String webSite = "";
    public String name = "";
    public String date = "";
}

如何按日期排序而不是按名称排序?日期是long类型而不是字符串。

Long.valueOf(date).compareTo(Long.valueOf(date2))

在模型类中,我声明了"long date=0;"。在我的主要比较方法中,我使用了以下代码:

Collections.sort(userList2, new Comparator() {
    public int compare(HistoryDetails date, HistoryDetails date2) {
        return Long.valueOf(date).compareTo(Long.valueOf(date2));
    }
});

然而,我得到了一个"cannot resolve method 'valueOf'"的错误。

// 根据所需的格式,例如:"dd-mm-yyyy"
SimpleDateFormat f = new SimpleDateFormat("dd-mm-yyyy");
try {
    Long dateOne = f.parse(first.date).getTime();
    Long dateSecond = f.parse(second.date).getTime();
    return dateOne.compareTo(dateSecond);
} catch (ParseException e) {
    e.printStackTrace();
}
return 0;

请将上述代码放在Collections接口的'compare()'方法中。上面我提到按日期值排序列表。如果您需要按域排序的代码,我也可以提供给您!

我想说一件事。我只是提供了一种简单开发的方法。

感谢Ravi Hari和Than的帮助。非常感谢。

0
0 Comments

问题的出现原因是:需要对一个包含多个数组的列表进行按字母顺序排序,但是目前的数据结构不方便进行排序操作。

解决方法是:首先,将这些数组封装到一个类中(例如命名为MyData),这样可以更方便地进行排序操作。然后,将所有新创建的对象放入一个集合中(例如ArrayList)。接下来,通过使用Collections.sort函数,传入列表和Comparator接口的实现来实现排序逻辑。

例如,如果想要使用title字段对整个列表进行排序,可以按照以下方式实现:

定义一个实现了Comparator接口的比较器,其中实现了compare函数:

compare(MyData o1, MyData o2){return o1.title.compareTo(o2);

0