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.2ArrayListVector实现类

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

原文地址:https://www.cnblogs.com/bclshuai/p/10339197.html