java 设置日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
//这里会有一个异常,所以要用try catch捕获异常
try {
d = sdf.parse("2017-11-06");
}catch (Exception e){
e.printStackTrace();
}
java Arrays List 合并,去重,排序
/***
通过查看Arrays类的源码可以知道,asList返回的List是Array中的实现的内部类,而该类并没有定义add和remove方法
**/
List<String> newYgsx = new ArrayList(Arrays.asList(ygxxEntity.getcYgsx().split(",")));
//合并
newYgsx.addAll(Arrays.asList(entity.getcYgsx().split(",")));
//去重
Set<String> set = new HashSet<>(newYgsx);
newYgsx = new ArrayList<>(set);
//排序
Collections.sort(newYgsx, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
});
java List 合并
https://www.cnblogs.com/Luouy/p/6482733.html
Arrays.asList()
- 该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean)
- 该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新
- 不支持add和remove方法
ArrayList
- ArrayList就是传说中的动态数组
- 动态的增加和减少元素
- 实现了ICollection和IList接口
- IsSynchronized属性指示当前的ArrayList实例是否支持线程同步,
- ArrayList.Synchronized静态方法则会返回一个ArrayList的线程同步的封装。
- Count属性是目前ArrayList包含的元素的数量,这个属性是只读的。
- Capacity属性是目前ArrayList能够包含的最大数量
ps1
- ArrayList的许多方法,如Index、IndexOf、Contains、Sort等都是在内部数组的基础上直接调用Array的对应方法。
- ArrayList里面添加和修改元素,都会引起装箱和拆箱的操作,频繁的操作可能会影响一部分效率。
- 正确的预估可能的元素,并且在适当的时候调用TrimSize方法是提高ArrayList使用效率的重要途径。
ps2
- Add方法用于添加一个元素到当前列表的末尾
- AddRange方法用于添加一批元素到当前列表的末尾
- Remove方法用于删除一个元素,通过元素本身的引用来删除
- RemoveAt方法用于删除一个元素,通过索引值来删除
- RemoveRange用于删除一批元素,通过指定开始的索引和删除的数量来删除
- Insert用于添加一个元素到指定位置,列表后面的元素依次往后移动
- InsertRange用于从指定位置开始添加一批元素,列表后面的元素依次往后移动
- ToArray方法把ArrayList的元素Copy到一个新的数组中。
/*******
每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,
如果是,它就会以当前容量的两倍来重新构建一个数组(临界值操作影响速率)
一个可能有200个元素的数据动态添加到一个以默认16个元素大小创建的ArrayList中,将会经过:
16*2*2*2*2 = 256/
*************/
ArrayList List = new ArrayList( 210 ); //正确的预估可能的元素 默认大小 16
HashSet
- HashSet天生就是为了提高查找效率的
- HashSet 散列表的内部结构
- HashSet不能重复存储equals相同的数据 。原因就是equals相同,数据的散列码也就相同(hashCode必须和equals兼容)
- HashSet的存储是无序的 ,没有前后关系,他并不是线性结构的集合。
- hashCode方法必须与equals方法向兼容。
查找原理:
- 直接根据数据的散列码和散列表的数组大小计算除余后,就得到了所在数组的位置,然后再查找链表中是否有这个数据即可。
Collections.sort()
- 若一个类实现了Comparable接口,就意味着“该类支持排序”。
Collections.sort(list, new PriceComparator())
- 需要排序的list
- 比较器,实现Comparator接口的类,返回一个int型的值,就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。