【发布时间】:2012-08-09 16:19:00
【问题描述】:
我正在尝试按字母顺序对 String 的数组列表进行排序, 我什么都试过了 从简单的方式:
List<String> theList = new ArrayList<String>();
theList.add("silex");theList.add("soliton");
theList.add("snake");theList.add("supracanon");
Collections.sort(theList);
到更奇特的东西:
List<String> theList = new ArrayList<String>();
theList.add("silex");theList.add("soliton");
theList.add("snake");theList.add("supracanon");
Collections.sort(
theList,
new Comparator<String>()
{
public int compare(String lhs, String rhs)
{
return lhs.compareTo(rhs);
}
}
);
但是没有任何效果,我做错了什么? 谢谢。
ps:我正在查看生成的 ArrayList 的内容,如下所示:
for (String temp:listeProduitPredit){
System.out.println(temp);
}
列表的内容在排序过程前后没有变化。
================================================ =============================== 好吧,这是实际代码,我有一个 EJB 做数据库访问, 其中一种方法是返回字符串列表。
字符串列表应该按照字典中的顺序排列(按字母顺序) 但是 'Collections.sort(rList)' 什么都不做(输入 = 输出)
public List<String> rechercherListeDeProduitCommencantPar(Integer gammeId, Integer familleId, String debutProduit) {
Criteria c = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Produit.class, "p");
c.createAlias("p.famille", "f").createAlias("f.gamme", "g");
if (gammeId != null) {
c.add(Restrictions.eq("g.id", gammeId));
}
if (familleId != null) {
c.add(Restrictions.eq("f.id", familleId));
}
if (!debutProduit.equals("")) {
c.add(Restrictions.like("p.designation", debutProduit+"%"));
}
//getting only the interesting intels (product's name)
List<String> rList = new ArrayList<String>();
List<Produit> pList = c.list();
for (Produit p : pList){
rList.add(p.getDesignation());
}
Collections.sort(rList);
return rList;
}
这是在 Jboss AS 5.1 服务器上运行的,我在前后使用 for 对其进行了测试,列表没有按字母顺序排序,但确实做了一些修改:
18:44:07,961 INFO [STDOUT] Before=========
18:44:07,961 INFO [STDOUT] SUMO VIE
18:44:07,961 INFO [STDOUT] soliton
18:44:07,961 INFO [STDOUT] snake
18:44:07,961 INFO [STDOUT] SupraCanon
18:44:07,961 INFO [STDOUT] Segolene
18:44:07,961 INFO [STDOUT] silex
18:44:07,962 INFO [STDOUT] After=========
18:44:07,962 INFO [STDOUT] SUMO VIE
18:44:07,962 INFO [STDOUT] Segolene
18:44:07,962 INFO [STDOUT] SupraCanon
18:44:07,962 INFO [STDOUT] silex
18:44:07,962 INFO [STDOUT] snake
18:44:07,962 INFO [STDOUT] soliton
【问题讨论】:
-
它究竟是如何“不工作”的?您如何运行该代码以及如何检查结果?见sscce.org
-
我已经尝试过您的代码,它看起来不错,如下所示:ideone.com/lrUDO。
-
@assylias:没有排序,注意OP每行插入两个元素。
-
@Eldosa:很可能错误出现在您现在向我们展示的代码中。再次:sscce.org
-
向我们展示你得到的输出和你期望的输出,否则我们无能为力。