Java Web实用小知识02

日期时间转换到页面显示
    两种方式:
    1. OutputStream out = response.getOutputStream(); map.put("enterFromTime", sdf.format(itemData.getEnterFromTime()));// 入单时间
    2. map.put("changeTime", DateUtil.formatDate(itemData.getChangeTime()));// 转单时间2种好。
日期加一天

高级搜索时会用到结束日期要加一天,以便得到符合的搜索结果

    //日期加一天:
    //结束时间
    if(searchJSON.has("endTime")){
        String endTime = (String)searchJSON.get("endTime");
        if(!endTime.equals("")){
            Date date = DateUtil.getDateFormat().parse(endTime);
            Calendar cal = Calendar.getInstance();
            cal.setTime(date);
            cal.add(Calendar.DATE, 1);
            date = cal.getTime();
            ItemSearchWrap.setEndTime(date);
        }
    }
java中string,integer转bigdecimal的例子

例子1,string 转BigDecimal

public class Test{ 
    public static void main(String[] arg) { 
        String str1="2.30";
        BigDecimal bd=new BigDecimal(str1);
        System.out.println(bd);
    } 
}

直接new 就行了。

例子2,BigDecimal和String的相互转换

/*由数字字符串构造BigDecimal的方法 
*设置BigDecimal的小数位数的方法 
*/ 
import java.math.BigDecimal; 
//数字字符串 
String StrBd="1048576.1024"; 
//构造以字符串内容为值的BigDecimal类型的变量bd 
BigDecimal bd=new BigDecimal(StrBd); 
//设置小数位数,第一个变量是小数位数,第二个变量是取舍方法(四舍五入) 
bd=bd.setScale(2, BigDecimal.ROUND_HALF_UP); 
//转化为字符串输出 
String OutString=bd.toString();

补充: Integer转BigDecimal

new BigDecimal(Integer.parseInt(findCcid.toString()))
java中类型转换String,list,int

1.String ->list

String[] arr = tpAssignMarkStr.split(",");
        List<String> list = Arrays.asList(arr);

2.list->String

List<String> markList = tpAssignMarkFieldDao.getTpAssignDeptMarkField(null,paperId);
        String markStr = StringUtils.join(markList, ",");//考虑到存储多个标志
        String[] markString = markStr.split(",");

        List<TpSampleDataBean> dataList = tsSampleTemplateBean.getTpSampleDataBeans();
        List<String> sampleDataIds= new ArrayList<String>();//存放样本的数据list
        for (TpSampleDataBean d : dataList) {
            for (String str : markString) {
                if (str.equals(d.getFieldChar1())) {// FieldChar1存的是标志
                    if (StringUtils.equals(d.getPaperId(), paperId)
                            && StringUtils.equals(d.getComplianceId(),complianceId)) {
                        sampleDataIds.add(d.getId());
                    }
                }
            }
        }

1.int->String

int i=12345;
String s="";
第一种方法:s=i+"";
第二种方法:s=String.valueOf(i);
第三种方法:String s = Integer.toString(i);

2.String->int

s="12345";
int i;
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();

ps1:

第一种方法:s=i+”“; //会产生两个String对象 第二种方法:s=String.valueOf(i);
//直接使用String类的静态方法,只产生一个对象
第一种方法:i=Integer.parseInt(s);//直接使用静态方法,不会产生多余的对象,但会抛出异常
第二种方法:i=Integer.valueOf(s).intValue();//Integer.valueOf(s) 相当于 new
Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象
Double, Float, Long 转成字串的方法大同小异.

java遍历Map对象

1.在for-each循环中使用entries来遍历

Map<Integer, Integer> map = new HashMap<Integer, Integer>();

for (Map.Entry<Integer, Integer> entry : map.entrySet()) {

    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

}

2.在for-each循环中遍历keys或values。

Map<Integer, Integer> map = new HashMap<Integer, Integer>();  

//遍历map中的键  

for (Integer key : map.keySet()) {  

    System.out.println("Key = " + key);  

}  

//遍历map中的值  

for (Integer value : map.values()) {  

    System.out.println("Value = " + value);  

} 

该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

IDEA 编译时报错 “未结束的字符串文字”解决方法

这个问题就是编码的问题 UTF-8和GBK的混淆,采用如下方法:
1、在idea的Settings中,找到File Encodings,将IDE Encoding 改为UTF-8
2、更换idea下面的encodings.xml文件,恢复到最近一次设置
3、或者更改encodings.xml里面的配置,GBK和UTF-8统一一下

jdk map详解
Java 自带了各种 Map 类。这些 Map 类可归为三种类型:

1. 通用Map,用于在应用程序中管理映射,通常在 java.util 程序包中实现

HashMap、Hashtable、Properties、LinkedHashMap、IdentityHashMap、TreeMap、WeakHashMap、ConcurrentHashMap

2. 专用Map,通常我们不必亲自创建此类Map,而是通过某些其他类对其进行访问

java.util.jar.Attributes、javax.print.attribute.standard.PrinterStateReasons、java.security.Provider、java.awt.RenderingHints、javax.swing.UIDefaults

3. 一个用于帮助我们实现自己的Map类的抽象类

AbstractMap

类型区别

HashMap

最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非同步的。

TreeMap

能够把它保存的记录根据键(key)排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非同步的。 
Hashtable

与 HashMap类似,不同的是:key和value的值均不允许为null;它支持线程的同步,即任一时刻只有一个线程能写Hashtable,因此也导致了Hashtale在写入时会比较慢。 
LinkedHashMap

保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历的时候会比HashMap慢。key和value均允许为空,非同步的。 

最快的遍历方法:
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<String, String> entry = iterator.next();
    System.out.println(entry.getKey() + " :" + entry.getValue());
}

//排序(按key排序):
Map<String, String> map = new HashMap<String, String>();
map.put("a", "c");
map.put("b", "b");
map.put("c", "a");

// 通过ArrayList构造函数把map.entrySet()转换成list
List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
// 通过比较器实现比较排序
Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
    public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2) {
        return mapping1.getKey().compareTo(mapping2.getKey());
    }
});

for (Map.Entry<String, String> mapping : list) {
    System.out.println(mapping.getKey() + " :" + mapping.getValue());
}

//按value排序
Map<String, String> map = new TreeMap<String, String>();
        map.put("a", "c");
        map.put("b", "b");
        map.put("c", "a");

        // 通过ArrayList构造函数把map.entrySet()转换成list
        List<Map.Entry<String, String>> list = new ArrayList<Map.Entry<String, String>>(map.entrySet());
        // 通过比较器实现比较排序
        Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
            public int compare(Map.Entry<String, String> mapping1, Map.Entry<String, String> mapping2) {
                return mapping1.getValue().compareTo(mapping2.getValue());
            }
        });

        for (String key : map.keySet()) {
            System.out.println(key + " :" + map.get(key));
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值