java集合
集合
8.3.Set集合
8.3.1HashSet
无序,不重复,存取查找性能好,非线程同步,集合元素可以是null,判断相同元素的标准是hashcode()方法返回值相等且equals()返回值也相等。Hashcode不同,equals相同,会存在不同位置。hashcode()方法计算存储位置,快速存取;比数组,长度可变,内存可不连续。改变元素的值容易引起混乱。Add,remove;相同元素多次插入HashSet时,会以链表的形式存储在相同位置,称为hash桶,会影响性能。
8.3.2LinkedHashSet
根据插入顺序排序,不重复,以链表维护元素的次序,先插入在前。性能低于hashset。
8.3.3TreeSet
有序,不重复,排序通过CompareTo(Object obj)方法,CompareTo相同的无法添加。定义类需要实现Comparable接口。保存相同类型的对象。存储规则:equals和CompareTo返回结果同步。修改元素会引起混乱。last(),first(),lower()等。自然排序按升序排列,定制排序在构造函数中传入Comaprator接口lambda表达式。
TreeSet是有序,通过插入对象的CompareTo方法比较,返回为0表示相同,则无法在添加,自定义类需要实现该方法。TreeSet中应该添加同一个类的对象。
Equals和CompareTo返回的结果要一致,否则会出错。
修改TreeSet里的实例变量会导致不在有序,且可能出现重复值,删除重复的对象会失败,可以删除没有没修改过或不与修改过的对象相同的对象。所以尽量不要修改TreeSet和hassSet的对象。
自然排序:TreeSet自动调用集合元素的CompareTo方法来比较元素之间的大小关系,进行升序排列。
定制排序,创建TreeSet对象时,以lambda表达式传入函数式接口Comparator,实现compare函数,用于比较。还是根据返回值判断大小。对象自身的CompareTo接口就不用了。
专为枚举类设计的集合类,有序,按枚举类中定义的顺序排序,存储紧凑高效。
8.3.4EnumSet类
有序,以枚举值在枚举类中的定义顺序为顺序,不可插入null;
Set都是线程不安全的,hashset性能高于treeset,要求有序时才使用treeset。迭代访问时linkedhashset性能高于hashset;
8.4List集合
8.4.1List接口和ListIterator接口
List是按索引插入值,0开始,可重复,通过对象equals函数判断是否相等。
indexOf(Objrct o);查找object对象第一次出现的索引
sort(Comparator c)根据参数对list排序。
Set只提供iterator()方法,List还有额外的listIterator()方法,返回listIterator对象,有hasPrevious() previous(),add()三个方法。
ListIterator可以通过hasNext正向遍历list,可以通过hasPrevious反向遍历list。
8.4.2ArrayList和Vector实现类
Arraylist和Vector默认大小为10 ,可以用initialCapacity(int)或ensureCapacity(int)方法来设置初始大小,通过trimToSize()将大小设置为容量大小,减少空间占用。
Vector的子类Stack(栈),后进先出,性能差。
ArrayList是线程不安全的,而Vector是线程安全的。
Arrays中有一个aslist(object… a)将一个数组或者指定个数的对象转换成list集合,格式固定,不可增加或删除。
List实例
import java.util.*;
public class helloworld
{
public static void main(String[] args)
{
List booklist=new ArrayList();
booklist.add(new String("疯狂java讲义1"));
booklist.add(new String("疯狂java讲义2"));
booklist.add(new String("疯狂java讲义3"));
ListIterator lit=booklist.listIterator();
while(lit.hasNext())
{
System.out.println(lit.next());
lit.add(new String("-----------分隔符----------"));
}
System.out.println("开始反向");
while(lit.hasPrevious())
{
System.out.println(lit.previous());
}
}
}
8.5Queue集合
Queue队列,先进先出,插入队尾,对头取出。
8.5.1PriorityQueue实现类
PriorityQueue实现类,并不是先进先出,而是进行排序,小的在头,大的在尾,不能是null,需要相同对象。排序分自然排序很定制排序,定制排序需在构造器中传入实现Comparable接口。
8.5.2deque接口和arraydeque实现类
Deque是一个双端队列,两头操作。XXXFirst() XXXLast()操作函数。
ArrayDeque是接口Deque的实现类,
8.5.3 Linkedlist实现类
可以当做list、stack和deque来使用,内部采用链表实现,随机访问性能较差,插入删除性能较好。
遍历集合元素,ArrayList和Vector采用get方法,linkedlist采用itertor。
8.6 Map集合
Hashmap
线程不安全能使用null作为key或者value;hashtable线程安全,不能使用null作为key或者value,equals判断键值是否相等。 如果采用可变对象作为hashmap的键值,程序修改了对象,导致map无法正常访问修改的键值。
Linkedhashmap
按插入顺序保存键值对。
TreeMap
有序,是红黑树结构,每个节点是一个key-value对,根据key值进行排序,有自然排序和定制排序。
Properties
方便的操作属性文件,,文件内容格式属性名=属性值,load加载,store保存,setProperty()设置,getProperty()获取值。
WeakHashMap
保留对对象的弱引用,一旦系统垃圾回收后,则map里的对象会被删除,wmap.Put(“java”,“new String(中等));java是直接量是强引用,不会删除。wmap.Put(new Stirng(“C++”),“new String(中等));C++为弱引用,回收会被删除。
IdentyHashMap
与hashmap类似,只是采用==来判断key值是否相等。而不是equels和CompareTo对比。允许使用null作为key和value。
EnumMap
创建时必须指定枚举类,将枚举值与对应的关联值对应起来,以枚举值作为key值,根据枚举值的顺序排列,不允许null作为key值,可以作为value值。
8.8操作结合的工具类Collection
8.8.1集合的操作
void reverse(List list),反序
void shuffle(List list),随机排序,打乱排序
void sort(List list)自然顺序排序
void swap(List list,int i,int j)调换list中的两个恶元素
void rotate(List list,int distence)根据distence的值将list中的元素循环移位。
Int binarySearch(List list , Object key)list必须有序,快速查找键值的索引。
Int frequency(collection c,Object o)查找集合中出现的次数。
Boolean replaceAll(List list, Object oldVal,Object newVal)新值代替所有旧值。
8.8.2集合同步封装Collection.synchronizedXxx
List list=Collection.synchronizedList(new ArrayList());
8.8.3集合的只读设置
通过Collection的emptyXxx()方法创建空的只读集合,使用singletonXxx()创建只含有一个对象的只读集合,通过unmodifiableXxx()创建只读集合。
自己编了一个股票监控软件,有如下功能,有兴趣的朋友可以下载;
(1) 个股监测。监测个股实时变化,可以监测个股大单交易、急速拉升和下降、主力入场和出场、股票最高点和最低点提醒。检测到最高点、最低点、主力进场点、主力退场点、急速拉升点、急速下跌点,给出语音或者声音提醒,不用再时刻看着大盘了,给你更多自由的时间;
(2) 大盘监测。监测大盘的走势,采用上证、深证、创业三大指数的综合指数作为大盘走势。并实时监测大盘的最高点和最低点、中间的转折点。
(3) 股票推荐。还能根据历史数据长期或短期走势进行分析,对股市3千多个股票进行分析对比,选出涨势良好的股票,按照增长速度从大到小排序,推荐给你涨势良好的股票;
下载地址:
1.0.3版本(修复大盘指数崩溃缺陷)下载地址:
链接:https://pan.baidu.com/s/1BJcTp-kdniM7VE9K5Kd3vg 提取码:003h
更新链接:
https://www.cnblogs.com/bclshuai/p/10621613.html