articlelist

时间:2024-11-13 22:23:27编辑:阿星

java 怎么将List里面数据排序

不好意思,上午只是粗略地看了一下,没有细致看,现在详细回答你的提问。ArrayList底层是用一个长度为10的Object数组实现,不管添加进去什么类型的数据,都会转换成Object对象,除非你用很早以前的JDK版本。这样就好理解了,像你写的程序arrayList1中add了String和Integer两种类型的数据,这两类对象没有什么可比性,就像拿打火机和U盘比一个性质。所以,是没有办法进行直接排序的。你要求的是要按ArrayList里面的第1、2、4数据进行排序,这个可以。先来arrayList1四个数据分别是2、"daas"、6、"1",第1、2、4数据即2、“daas”、“1”,我选择按照String类型进行排序,所以第1个数据2转换成String类型即可。因为第3个数据6不进行排序,remove就好。这是个题还是个什么,其实还是留了点活路的,因为后面的(你arrayList2\3\4下面)代码都是往arrayList1中添加的,而且还都是String类型。这也是我选择String类型进行排序的原因。代码如下: List arrayList1 = new ArrayList(); arrayList1.add(2); //0 arrayList1.add("daas"); //1 arrayList1.add(6); //2 arrayList1.add("1"); //3 list.add(arrayList1); //my code String convert = String.valueOf(arrayList1.get(0)); arrayList1.remove(2); arrayList1.remove(0); arrayList1.add(convert); /此处为你的arrayList2\3\4代码 Collections.sort(arrayList1); for(int i = 0; i < arrayList1.size(); i++) { System.out.println(arrayList1.get(i)); }结果为:12358daas因为怕你深挖,强调两点:第一点,由结果看出Collections.sort(arrayList1),是以String的ASCII码进行排序的,为了证明这一点,就要看原代码,这时你就会发现JDK中String的compareTo方法是个空实现,底层并不是用java写的,这点没事,我们可以用一定的方法让它把特征暴露出来,然后就可以理解思想。你看我下面写的小测试程序就会明白。String a = new String("Z");String b = new String("A");System.out.println(a.compareTo(b));String c = new String("A");String d = new String("B");System.out.println(c.compareTo(d));//看结果,证明String的自然顺序比较即比较ASCII值,只是第一步。//看结果,证明compareTo返回值是后面的ASCII码减支前面的ASCII码,第二步。String e = new String("g");String f = new String("e");String h = new String("h");List list = new ArrayList();list.add(e);list.add(f);list.add(h);Collections.sort(list);for(String i : list) {System.out.println(i);}结果为:25-1egh//证明String的自然排序即ASCII码从小到大排序,最后一步。第二点,你的要求是“要按ArrayList里面的第1、2.4数据进行排序,分别怎么做啊”,这个问题的描述有问题,或者不详细,arryList2、arrayList3、arrayList4任何一个里面一共就add了3个数据,哪来第4个。如果是分别对arrayList2\3\4里面的数据进行排序,两个选择,(1)把所有Integer转换成String类型,再排序,参考arrayList2。(2)运用Integer.valueOf()方法,将内容为数字的String数据转换成Integer,把原来的remove掉,把内容非数字的String数据remove掉,再排序,桶排序、冒泡排序、快速排序等你随便选。讲解到这,不管想对哪个list进行排序,你应该都会写了。总结:除非比较ASCII码,Integer类型和内容为非数字的String类型数据是没有办法进行比较的,不管是直接比较,还是间接比较。还是上面那句话,像打火机和U盘没有可比性一样,理解这点很重要。即使用Integer.valueOf()方法对内容为非数字的String类型数据进行转换没有用,会报NumberFormatException。说这点意思是如果你想按Integer类型排序,得把所有内容为非数字的String类型数据remove掉。题外话:这种类型的题我记得上大学的时候有,不知道你是不是学生,今天想来,其实用处真不大,都用泛型,现在写代码不用泛型的程序员几乎是完全不存在了。祝心情愉快~~亲手打,如果满意,把分给我吧~~哈哈。。

java 怎么将List里面数据排序?

学生实体类,包含姓名和年龄属性,比较时先按姓名升序排序,如果姓名相同则按年龄升序排序。第一种:实体类自己实现比较(实现comparable接口:public interface Comparable ,里面就一个方法声明:public int compareTo(T o); )然后利用List类的sort(Comparator c)方法或java.util.Collections工具类的sort(List list) (其实里面就一句:list.sort(null); )进行排序:结果:第二种:借助比较器进行排序。示例代码:比较器java.util.Comparator类是一个接口(public interface Comparator ),包含int compare(T o1, T o2);等方法:我们的比较器要实现该接口并实现compare方法:比较的时候可以利用List的sort(Comparator c)方法(或者java.util.Collections工具类的sort(List list, Comparator c)方法)进行排序。结果跟第一种方法一样:

高手进,不懂勿入,会者有礼 <!--{$GetArticleList(0,0,True,0,True,10,False,False,"",0,3,2,30,0,True,1

标签{$GetArticleList}的参数
作者:动易 来源:动易 发布时间:2012年05月25日 点击数: 1244

标签{$GetArticleList(参数列表)}



作用:

以列表形式显示文章标题等信息 (超级函数式

参数:

0、iChannelID ---频道ID,0为所有同类频道 (SiteWeaver6.7之后可以指定多个频道,调用多个不同频道ID以|分隔,如1|2|3)

1、arrClassID ---栏目ID数组,0为所有栏目。调用多个不同栏目ID以|分隔,如2|4|7|9|10。

2、IncludeChild ----是否包含子栏目,仅当arrClassID为单个栏目ID时才有效,True----包含子栏目,False----不包含

3、iSpecialID ------专题ID,0为所有文章(含非专题文章),如果为大于0,则只显示相应专题的文章,包括全站专题。

4、UrlType ---- 链接地址类型,0为相对路径,1为带网址的绝对路径,4.03时为ShowAllArticle

5、ArticleNum ---文章数,若大于0,则只查询前几篇文章

6、IsHot -------是否是热门文章,True为只显示热门文章,False为显示所有文章

7、IsElite ----------是否是推荐文章,True为只显示推荐文章,False为显示所有文章

8、InputerName ----作者姓名,如果不为空,则只显示指定录入者的文章,用于个人文集

9、DateNum ----日期范围,如果大于0,则只显示最近几天内更新的文章

10、OrderType ----排序方式,1----按文章ID降序,2----按文章ID升序,3----按更新时间降序,4----按更新时间升序,5----按点击数降序,6----按点击数升序,7--按评论数降序,8--按评论数升序

11、ShowType -----显示方式,1为普通样式,2为表格式,3为各项独立式,4为智能多列式,5为输出DIV,6为输出RSS

12、TitleLen ----标题最多字符数,一个汉字=两个英文字符,若为0,则显示完整标题

13、ContentLen ---文章内容最多字符数,一个汉字=两个英文字符,为0时不显示。如文章内容字数较多,可能会导致溢出错误。

14、ShowClassName -----是否显示所属栏目名称,True为显示,False为不显示

15、ShowPropertyType ------显示文章属性(固顶/推荐/普通)的方式,0为不显示,1为小图片,2为符号,3以上为小图片样式(命名方式为article_commonN.gif、article_eliteN. gif、article_ontopN.gif,N为具体数字,N≥2,图片存放在当前频道的images文件夹中),11为显示123……样式的序号(SP3新增功能)

16、ShowIncludePic ----是否显示“[图文]”字样,True为显示,False为不显示

17、ShowAuthor --------是否显示文章作者,True为显示,False为不显示

18、ShowDateType ------显示更新日期的样式,0为不显示,1为显示年月日,2为只显示月日, 3为以“月-日”方式显示月日

19、ShowHits ----------是否显示文章点击数,True为显示,False为不显示

20、ShowHotSign -----------是否显示热门文章标志,True为显示,False为不显示

21、ShowNewSign -------是否显示新文章标志,True为显示,False为不显示

22、ShowTips ----------是否显示作者、更新日期、点击数等浮动提示信息,True为显示, False为不显示

23、ShowCommentLink ----是否显示评论链接,True为显示,False为不显示,此选项只有当相应文章在后台设置了“显示评论链接”才有效。

24、UsePage --------是否分页显示,True为分页显示,False为不分页显示,每页显示的文章数量由MaxPerPage指定

25、OpenType -----文章打开方式,0为在原窗口打开,1为在新窗口打开

26、Cols ---可选参数,每行显示标题的的列数,超过此列数标题就换行。本功能显示一行多列的标题排列效果,配合本频道调用文章标题时不显示省略号的功能使用。本参数兼容4.03 版,可缺省

27、CssNameA ----可选参数,调用自定义有链接的文字CSS风格样式名。本参数兼容4.03版,可缺省

28 CssName1 ----可选参数,调用自定义无链接的文字CSS样式名,可显示奇数表格行背景与日期等无链接的文字样式。本参数兼容4.03版,可缺省

29、CssName2 ----可选参数,调用自定义无链接的文字CSS样式名,可显示偶数表格行背景与日期等无链接的文字样式。本参数兼容4.03版,可缺省

调用例举

1、指定频道与调用栏目ID为2、4、7、9、10的栏目内容

{$GetArticleList(1,2|4|7|9|10,True,0,True,8,False,False,"",0,3,2,44,0,True,1,True,False, 3,False,False,False,True,True,False,0)}

2、指定频道与栏目ID调用

{$GetArticleList(1,0,True,0,True,8,False,False,"",0,3,2,44,0,True,1,True,False,3,False, False,False,True,True,False,0)}

3、文章频道首页热门文章调用

{$GetArticleList(ChannelID,0,True,0,True,7,True,False,"",0,3,2,24,0,False,1,True,False, 0,False,False,False,True,True,False,0)}

4、文章频道首页栏目列表调用

{$GetArticleList(ChannelID,rsClass_arrChildID,True,0,rsClass_ShowAllItem, rsClass_TopNumber,False,False,"",0,rsClass_ItemListO

rderType,2,30,0,False,1,True,False,3,False,False,True,True,True,False, rsClass_ItemOpenType)}

5、指定文章频道ID为1、专题ID为1的专题的最新文章列表的调用

{$GetArticleList(1,0,True,1,True,8,False,False,"",0,3,2,44,0,True,1,True,False,3,False, False,False,True,True,False,0)}


上一篇:项目管理培训总结

下一篇:没有了