zoukankan      html  css  js  c++  java
  • Java使用技巧记录

    数字1或者字符1ASCII码为49,字符A的ASCII码为65,字符a的ASCII码为97

    1.Java中定义Map常量,List常量

    一般方式的使用静态代码块。比如:

     public final static Map map = new HashMap();  
     static {  
         map.put("key1", "value1");  
         map.put("key2", "value2");  
     }  
    

    一种简单定义Map常量的方式

    public final static Map<String, Fragment> NAV_ITEM_ADPTER = new HashMap<String, Fragment>() {
        {
            put("拍录传", new CameraFragment());
            put("集群对讲", new GroupTalkFragment());
            put("视通", new VideoCallFragment());
            put("位置", new PositionFragment());
            put("浏览", new BrowseFragment());
            put("消息", new MsgFragment());
            put("群组", new GroupFragment());
            put("设置", null);
            put("退出", null);
        }
    };
    

      

    list则可以这样定义:

    public final static List<String> LIST = Arrays.asList("one","two","three");
    

    2.LIST 转Map

    第一种: 取list中某2个字段作为Map的K,V

       public Map<Long, String> getIdNameMap(List<Account> accounts) {
           return accounts.stream().collect(Collectors.toMap(Account::getId, Account::getUsername));
       }
    

    第二种:将id和实体Bean做为K,V

     public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
         return accounts.stream().collect(Collectors.toMap(Account::getId, account -> account));
     }
    

    或者这样写:

       public Map<Long, Account> getIdAccountMap(List<Account> accounts) {
           return accounts.stream().collect(Collectors.toMap(Account::getId, Function.identity()));
       }
    

    account -> account是一个返回本身的lambda表达式,后面的使用Function接口中的一个默认方法代替,使整个方法更简洁优雅。

    第三种: key存在重复记录时处理

       public Map<String, Account> getNameAccountMap(List<Account> accounts) {
           return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2));
       }
    

    如果使用第一种方法会出错,所以这里只是简单的使用后者覆盖前者来解决key重复问题。

    第四种: 使用某个具体的Map类来保存,如保存时使用LinkedHashMap

       public Map<String, Account> getNameAccountMap(List<Account> accounts) {
           return accounts.stream().collect(Collectors.toMap(Account::getUsername, Function.identity(), (key1, key2) -> key2, LinkedHashMap::new));
       }
    

    第五种: List转List<String,Map<String, String>>

    类似采购订单 id,对应明细记录。

    public Map<String,List<MCode>> getCodeListMap(){
         if(CollectionUtils.isEmpty(codeListMap)){
                 List<MCode> codeList = this.getCodeList();
                 Set<String> keySet = codeList.stream().map(code -> code.getCodeKbn()).collect(Collectors.toSet());
                 Iterator<String> it = keySet.iterator();
                 while(it.hasNext()) {
                         String key = it.next();
                         codeListMap.put(key, codeList.stream().filter(code -> code.getCodeKbn().equals(key)).collect(Collectors.toList()));
                 }
         }
         return codeListMap;
    }
    

    4.实体类与MAp转换

    // 将 Map 转换为 实体类
    User user = JSON.parseObject(JSON.toJSONString(user01), User.class);
    System.out.println(user);
    // 将 实体类 转换为 Map
    Map map = JSON.parseObject(JSON.toJSONString(user), Map.class);
    System.out.println(map);
    

    5.字符串和数组转换

    字符串转数组

    使用Java split() 方法

    split() 方法根据匹配给定的正则表达式来拆分字符串。

    注意: . 、 | 和 * 等转义字符,必须得加 \。多个分隔符,可以用 | 作为连字符。

    // 字符串转数组  java.lang.String
    String str = "0,1,2,3,4,5";
    String[] arr = str.split(","); // 用,分割
    System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4, 5]
    

    数组转字符串

    方法一: 遍历

    String[] arr = { "0", "1", "2", "3", "4", "5" };
    // 遍历
    StringBuffer str5 = new StringBuffer();
    for (String s : arr) {
        str5.append(s);
    }
    System.out.println(str5.toString()); // 012345
    

    方法二: 使用StringUtils的join方法

    //数组转字符串 org.apache.commons.lang3.StringUtils
    String str3 = StringUtils.join(arr); // 数组转字符串,其实使用的也是遍历
    System.out.println(str3); // 012345
    String str4 = StringUtils.join(arr, ","); // 数组转字符串(逗号分隔)(推荐)
    System.out.println(str4); // 0,1,2,3,4,5
    

    方法三: 使用ArrayUtils的toString方法

    // 数组转字符串 org.apache.commons.lang3.ArrayUtils
    String str2 = ArrayUtils.toString(arr, ","); // 数组转字符串(逗号分隔,首尾加大括号)
    System.out.println(str2); // {0,1,2,3,4,5}
    

    由于无法解释的神圣旨意,我们徒然地到处找你;你就是孤独,你就是神秘,比恒河或者日落还要遥远。。。。。。
  • 相关阅读:
    SqlDataAdapter 类
    新博开
    gcc编译C++程序

    抖动
    css3 导航效果
    javascript判断IE浏览器的版本
    CSS样式表继承详解
    css选择器
    鼠标样式
  • 原文地址:https://www.cnblogs.com/momoli/p/15765807.html
Copyright © 2011-2022 走看看