精华内容
下载资源
问答
  • 选取数据过多,导致前台页面杂乱,采用首字母分类,优化用户体验,下面是java实现List按字母分类的方法,代码是全,大家可以复制下来运行看看结果,希望可以帮到大家,有什么不懂地方,在评论区留言交流! 测试入口类:...

    说明

    选取数据过多,导致前台页面杂乱,采用首字母分类,优化用户体验,下面是java实现List按字母分类的方法,代码是全的,大家可以复制下来运行看看结果,希望可以帮到大家,有什么不懂的地方,在评论区留言交流!

    测试入口类:Test.java

    import com.google.gson.Gson;

    import java.util.*;

    /**
    * 测试入口
    * @author Moonce
    */


    public class Test {

    public static void main(String[] args) {
    SortUtil obj1 = new SortUtil();
    //获取默认数据
    List list= getTestData();
    //调用分类方法,返回map结果,结果格式:{A=[], B=[], C=[], D=[], E=[Symptom{id=3, typeId=0, name='恶心', remark='null'}], F=[], G=[], H=[], I=[], J=[], K=[], L=[], M=[], N=[], O=[Symptom{id=4, typeId=0, name='呕吐', remark='null'}], P=[], Q=[], R=[], S=[], T=[Symptom{id=1, typeId=0, name='头晕', remark='null'}, Symptom{id=2, typeId=0, name='头疼^', remark='null'}], U=[], V=[], W=[], X=[], Y=[], Z=[], 0=[]}
    Map map= obj1.sortSymptom(list);
    System.out.println("Map输出结果:"+map);
    //循环按照类别输出列表
    for (Map.Entry entry : map.entrySet()) {
    List symptoms = (List) entry.getValue();
    System.out.println(entry.getKey() +":" + symptoms);
    }
    // 用Gson转化为Json格式,结果格式:{"A":[],"B":[],"C":[],"D":[],"E":[{"id":3,"typeId":0,"name":"恶心"}],"F":[],"G":[],"H":[],"I":[],"J":[],"K":[],"L":[],"M":[],"N":[],"O":[{"id":4,"typeId":0,"name":"呕吐"}],"P":[],"Q":[],"R":[],"S":[],"T":[{"id":1,"typeId":0,"name":"头晕"},{"id":2,"typeId":0,"name":"头疼^"}],"U":[],"V":[],"W":[],"X":[],"Y":[],"Z":[],"0":[]}
    Gson gson = new Gson();
    System.out.println("Json输出结果:"+gson.toJson(map));/**/

    }

    /**
    * 自定义测试默认数据 * @return
    */
    private static List getTestData() {
    List list=new ArrayList();
    Symptom symptom = new Symptom();
    symptom.setName("头晕");
    symptom.setId(1L);
    list.add(symptom);
    symptom = new Symptom();
    symptom.setName("头疼^");
    symptom.setId(2L);
    list.add(symptom);
    symptom = new Symptom();
    symptom.setName("恶心");
    symptom.setId(3L);
    list.add(symptom);
    symptom = new Symptom();
    symptom.setId(4L);
    symptom.setName("呕吐");
    list.add(symptom);
    return list;
    }

    }

    首字母分类工具类:SortUtil.java

    package com.jeesite.test;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    /**
    * 症状按首字母分类方法
    * @author Moonce
    */
    public class SortUtil {
    public SortUtil() {

    }
    private final static String[] CAPITALIZATION_TABLE =
    {
    "A", "B", "C", "D", "E", "F", "G", "H", "I",
    "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0"
    };
    //字母Z使用了两个标签,这里有27个值
    //i, u, v都不做声母, 跟随前面的字母
    private char[] chartable =
    {
    '啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈',
    '击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然',
    '撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', '座'
    };
    private char[] alphatableb =
    {
    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
    'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
    };
    private char[] alphatables =
    {
    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
    'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
    };
    private int[] table = new int[27]; //初始化
    {
    for (int i = 0; i < 27; ++i) {
    table[i] = gbValue(chartable[i]);
    }
    }

    /**
    * 主函数,输入字符,得到他的声母, * 英文字母返回对应的大小写字母 * 其他非简体汉字返回 '0' 按参数
    * @param ch 首字母
    * @param type b 大写 ,其他默认小写
    * @return
    */
    public char Char2Alpha(char ch,String type) {
    if (ch >= 'a' && ch <= 'z')
    return (char) (ch - 'a' + 'A');//为了按字母排序先返回大写字母
    // return ch; if (ch >= 'A' && ch <= 'Z')
    return ch;

    int gb = gbValue(ch);
    if (gb < table[0])
    return '0';

    int i;
    for (i = 0; i < 26; ++i) {
    if (match(i, gb))
    break;
    }

    if (i >= 26){
    return '0';}
    else{
    if("b".equals(type)){//大写
    return alphatableb[i];
    }else{//小写
    return alphatables[i];
    }
    }
    }

    /**
    * 根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串
    * @param SourceStr 字符串
    * @param type 返回类型
    * @return
    */
    public String String2Alpha(String SourceStr,String type) {
    String Result = "";
    int StrLength = SourceStr.length();
    int i;
    try {
    for (i = 0; i < StrLength; i++) {
    Result += Char2Alpha(SourceStr.charAt(i),type);
    }
    } catch (Exception e) {
    Result = "";
    }
    return Result;
    }

    /**
    * 根据一个包含汉字的字符串返回第一个汉字拼音首字母的字符串
    * @param SourceStr 字符串
    * @param type 返回类型
    * @return
    */
    public String String2AlphaFirst(String SourceStr,String type) {
    String Result = "";
    try {
    Result += Char2Alpha(SourceStr.charAt(0),type);
    } catch (Exception e) {
    Result = "";
    }
    return Result;
    }
    private boolean match(int i, int gb) {
    if (gb < table[i])
    return false;
    int j = i + 1;

    //字母Z使用了两个标签
    while (j < 26 && (table[j] == table[i]))
    ++j;
    if (j == 26)
    return gb <= table[j];
    else
    return gb < table[j];
    }

    /**
    * 取出汉字的编码
    * @param ch
    * @return
    */
    private int gbValue(char ch) {
    String str = new String();
    str += ch;
    try {
    byte[] bytes = str.getBytes("GBK");
    if (bytes.length < 2)
    return 0;
    return (bytes[0] << 8 & 0xff00) + (bytes[1] &
    0xff);
    } catch (Exception e) {
    return 0;
    }
    }

    /**
    * 症状列表分类方法
    * @param list
    * @return
    */
    public Map sortSymptom(List list){
    Map map=new HashMap();
    List arraylist=new ArrayList();

    for(String a:CAPITALIZATION_TABLE){
    for(int i=0;i//为了排序都返回大写字母
    if(a.equals(String2AlphaFirst(list.get(i).getName().toString(),"b"))){
    arraylist.add(list.get(i));
    }
    }

    map.put(a,arraylist);
    arraylist=new ArrayList();
    }
    return map;
    }
    }

    实体类:Symptom.java

    package com.jeesite.test;

    /**
    * 症状实体类
    * @author Moonce
    */public class Symptom {
    private long id;

    private long typeId;

    private String name;

    private String remark;

    public Symptom() {
    }

    @Override
    public String toString() {
    return "Symptom{" +
    "id=" + id +
    ", typeId=" + typeId +
    ", name='" + name + '\'' +
    ", remark='" + remark + '\'' +
    '}';
    }

    public long getId() {
    return id;
    }

    public void setId(long id) {
    this.id = id;
    }

    public long getTypeId() {
    return typeId;
    }

    public void setTypeId(long typeId) {
    this.typeId = typeId;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

    public String getRemark() {
    return remark;
    }

    public void setRemark(String remark) {
    this.remark = remark;
    }
    }

    参考

    java 中文首字母分组,排序

    展开全文
  • java 8 lambda 表达式实现某个属性值查找集合中符合条件所有对象并求和1,先按照条件找到所有符合对象,生成集合。2,把生成集合进行单列求和。以上两步骤用lambda 表达式可以合并。定义对象:public class ...

    java 8 lambda 表达式实现按某个属性值查找集合中符合条件的所有对象并求和

    1,先按照条件找到所有符合的对象,生成集合。

    2,把生成的集合进行单列求和。

    以上两步骤用lambda 表达式可以合并。

    定义对象:

    public class cart {

    // 商品id

    private integer id;

    // 商品所属分类

    private integer categoryid;

    // 数量

    private integer count;

    }

    初始化对象,商品1和商品2有相同的分类id:

    list list = new arraylist(3) {{

    cart cart1 = new cart();

    cart1.setid(1);

    cart1.setcategoryid(1);

    cart1.setcount(1);

    add(cart1);

    cart cart2 = new cart();

    cart2.setid(2);

    cart2.setcategoryid(1);

    cart2.setcount(1);

    add(cart2);

    cart cart3 = new cart();

    cart3.setid(3);

    cart3.setcategoryid(2);

    cart3.setcount(1);

    add(cart3);

    }};

    用lambda 表达式的链式操作一次获取结果,相同分类id的商品数量求和:

    integer sum = list.stream().filter(item -> item.getcategoryid().equals(1)).collect(collectors.tolist()).stream().maptoint(cart::getcount).sum();

    博主也在学习中,java 8 新特性真的十分强大。有兴趣可以一起交流。

    希望与广大网友互动??

    点此进行留言吧!

    展开全文
  • 问题描述: 当有一个person类,里面有2个属性:name1,name2对应属性的是get,set方法。 构造了4个person类对象,如下...系统也能实现分类排序,只是不知道排列顺序是什么!!(什么方式升序和降序)太感谢了
  • 第6章 Java的类(Class)和对象(Object) 132 教学视频:59分钟 6.1 驾驶汽车向类(Class)的世界进发 132 6.1.1 汽车带来的问题 132 6.1.1 类的组成 134 6.1.3 使用自定义的Car类 136 6.1.4 类和对象 139 ...
  • 第6章 Java的类(Class)和对象(Object) 132 教学视频:59分钟 6.1 驾驶汽车向类(Class)的世界进发 132 6.1.1 汽车带来的问题 132 6.1.1 类的组成 134 6.1.3 使用自定义的Car类 136 6.1.4 类和对象 139 ...
  • 第6章 Java的类(Class)和对象(Object) 132 教学视频:59分钟 6.1 驾驶汽车向类(Class)的世界进发 132 6.1.1 汽车带来的问题 132 6.1.1 类的组成 134 6.1.3 使用自定义的Car类 136 6.1.4 类和对象 139 ...
  • 它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是...
  • 零基础Java入门课程

    2020-12-06 18:54:17
    Java入门 Java的历史、Java的版本、Java的优势、软件行业前景 Java开发环境搭建、编写Java入门练习 虚拟机的运行机制、Java的平台无关性、虚拟机垃圾回收机制 基础语法 关键字、标识符、Java数据类型分类、基础数据...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    7.4.3 固定长度的List 266 7.5 Queue接口 266 7.5.1 LinkedList实现类 266 7.5.2 PriorityQueue实现类 269 7.6 Map 270 7.6.1 HashMap和Hashtable实现类 271 7.6.2 SortedMap接口和TreeMap实现类 276 7.6.3 ...
  • Java入门 Java的历史、Java的版本、Java的优势、软件行业前景 Java开发环境搭建、编写Java入门练习 虚拟机的运行机制、Java的平台无关性、虚拟机垃圾回收机制 基础语法 关键字、标识符、Java数据类型分类、基础数据...
  • java面试题

    2018-01-01 15:35:15
    35. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后结果,那么这里到底是值传递还是引用传递? 18 36. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?...
  • Java入门 Java的历史、Java的版本、Java的优势、软件行业前景 Java开发环境搭建、编写Java入门练习 虚拟机的运行机制、Java的平台无关性、虚拟机垃圾回收机制 基础语法 关键字、标识符、Java数据类型分类、基础数据...
  • java 面试题 总结

    2009-09-16 08:45:34
    它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    26.java的awt和swing组件的GUI设计的关键 27.对于java流的认识 28.简单描述一下awt与swing区别。 29.简述java编程中事件处理模式。 30.你编写过applet吗?applet的安全权限如何?试列举java application或者...
  • Java经典编程300例(code)

    千次下载 热门讨论 2013-01-09 10:26:53
    实例056 Java对象深克隆 82 实例057 序列化与对象克隆 84 实例058 深克隆效率比较 87 第7章 面向对象进阶 89 实例059 经理与员工差异 90 实例060 重写父类中方法 92 实例061 计算几何图形面积 93 实例062 ...
  • Java开发实战1200例.第2卷.part3

    热门讨论 2013-05-08 22:46:34
    实例018 XSD中属性打包 30 实例019 XSD中对元素限定 32 实例020 在XSD中使用取值范围限定 34 实例021 在XSD中声明元素属性 36 实例022 在XSD中对字符进行限制 38 实例023 在XSD中对数值进行限制 39 1.3 XML...
  • Java开发实战1200例.第2卷.part2

    热门讨论 2013-05-08 22:45:35
    实例018 XSD中属性打包 30 实例019 XSD中对元素限定 32 实例020 在XSD中使用取值范围限定 34 实例021 在XSD中声明元素属性 36 实例022 在XSD中对字符进行限制 38 实例023 在XSD中对数值进行限制 39 1.3 XML...
  • Java开发实战1200例.第2卷.part1

    热门讨论 2013-05-08 22:44:13
    实例018 XSD中属性打包 30 实例019 XSD中对元素限定 32 实例020 在XSD中使用取值范围限定 34 实例021 在XSD中声明元素属性 36 实例022 在XSD中对字符进行限制 38 实例023 在XSD中对数值进行限制 39 1.3 XML...
  • 本书适合Java的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合Java程序员参考、查阅。 目录 第1篇 Java语法与面向对象技术 第1章 开发环境的应用 1.1 Java环境 实例001 下载JDK开发工具包 ...
  • 本书适合Java的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合Java程序员参考、查阅。 目录 第1篇 Java语法与面向对象技术 第1章 开发环境的应用 1.1 Java环境 实例001 下载JDK开发工具包 ...
  •  1.1 java的过去、现在和未来 2  1.1.1 java的历史 2  1.1.2 java的语言特点 3  1.1.3 java api简介 3  1.1.4 java未来发展 4  1.2 java程序设计环境 5  1.2.1 命令行工具——jdk 6.0 5  ...
  •  1.1 java的过去、现在和未来 2  1.1.1 java的历史 2  1.1.2 java的语言特点 3  1.1.3 java api简介 3  1.1.4 java未来发展 4  1.2 java程序设计环境 5  1.2.1 命令行工具——jdk 6.0 5  ...
  •  1.1 java的过去、现在和未来 2  1.1.1 java的历史 2  1.1.2 java的语言特点 3  1.1.3 java api简介 3  1.1.4 java未来发展 4  1.2 java程序设计环境 5  1.2.1 命令行工具——jdk 6.0 5  ...
  •  本书非常适合Java的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合Java程序员参考、查阅。 目 录 第1篇 Java语法与面向对象技术 第1章 开发环境的应用 2 1.1 Java环境 3 实例001 下载JDK开发...
  •  本书非常适合Java的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合Java程序员参考、查阅。 目 录 第1篇 Java语法与面向对象技术 第1章 开发环境的应用 2 1.1 Java环境 3 实例001 下载JDK开发...
  • 实例303 将某文件夹中文件进行分类存储 实例304 在指定目录下搜索文件 实例305 网络文件夹备份 12.2 文件压缩与解压缩 实例306 压缩所有文本文件 实例307 压缩包解压到指定文件夹 实例308 压缩所有子...
  •  《Java Web开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用实例,是目前市场上实例最全面开发类图书;书中实例来源于多位工程师多年积累,具有很强实用性。 本书是第II卷,以...
  • 而此次主要是针对校园用户所设计网站,对于数据的分类应该更多考虑校园用户需求,例如二手书籍、二手数码等的分类应该更加细致。本次设计主要难度在于数据详细分类,对于数据过滤必须要严谨,应当考虑...
  • cms后台管理

    热门讨论 2012-06-26 10:41:19
    就是简单将tag_list内容,即“paramWrap.put(OUT_LIST, DEFAULT_WRAPPER.wrap(list));”中放入数据遍历出来 style_2-1.html中内容 主要是对图文列表或标题列表向上滚动样式,其中包含两个同样为样式...

空空如也

空空如也

1 2
收藏数 39
精华内容 15
关键字:

java的list按属性分类

java 订阅