java集合框架

 

 

集合框架

 

图片

 

ArrayList

构造方法摘要

ArrayList()
构造一个初始容量为 10 的空列表。

 

ArrayList(Collection<? extends E> c)
构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。

 

ArrayList(int initialCapacity)
构造一个具有指定初始容量的空列表。

 

 

 

1.创建一个集合容器

 

2.创建一个容器,且设置它的下限。

 

3.创建一个容器,并且设置它的初始空间

方法

 

访问类型 返回值 方法

 

 

 

Boolean add(E o)
将指定的元素追加到此列表的尾部。

E:代表添加元素的类型

 

Void add(int index, Eelement)
在列表的指定位置插入指定元素

index:代表插入的位置,如果指定的索引小于0则发

IndexOutOfBoundsException异常,如果指定添加的元素为null 则发

NullPointerException异常

E:代表插入的元素

 

Void clear()
从列表中移除所有元素。

 

Boolean contains(Object o)
如果此 collection 包含指定的元素,则返回 true

 

 

 

Boolean equals(Object o)
比较此collection 与指定对象是否相等。

 

Int hashCode()
返回此collection 的哈希码值。

 

Boolean isEmpty()
如果此collection 不包含元素,则返回true

 

Iterator<E> iterator()
返回在此collection 的元素上进行迭代的迭代器。

 

Boolean remove(Object o)
从此 collection中移除指定元素的单个实例,如果存在 的话(可选操作)。

 

E remove(int index)
移除此列表中指定位置上的元素。

 

Int size()
返回此collection 中的元素数。

 

Object[] toArray()
返回包含此collection 中所有元素的数组

 

Boolean retainAll(Collection<?> c)
取交集,仅保留当前Collection中和指定Collection 相同的元素

 

Boolean removeAll(Collection<?> c)
移除此collection 中那些也包含在指定 collection 的所有元素(可选操作)。

 

Booelan addAll(Collection<? extends E> c)
一次添加一堆元素,将指定collection 中的所有元素都 添加到此 collection中(可选操作)。

 

Int lastIndexOf(Object elem)
返回指定的对象在列表中最后一次出现的位置索引。

 

E set(int index, E element)
用指定的元素替代此列表中指定位置上的元素。

 

Void trimToSize()
将此 ArrayList 实例的容量调整为列表的当前大小。

 

Object clone()
返回此 ArrayList 实例的浅表复制。

 

其它集合方法请查阅java se 帮助文档

 

 

 

List基本数结构

Vector

JDK1.2 Vector才加入集合框架 ,而且此集合是同步的。因为Vector的方法名称过于长,在1.2之后被ArrayList 取代,在Vector 可以使用Enumeration 来取出元素。独有方法

Enumeration <E>elements()
返回此向量的组件的枚举。

ArrayList

在实际的开发中比任何合集的查询速度都要快,但时ArrayList对于,删除,较慢,而且ArrayLIst 是不同步的。在底层ArrayList的数据结构是,按照下标的结构来存储的,可以随机访问,所以当查询的时候速度很快,但是在删除的时候,比如当前ArrayList 1000 个元素,删除索引5中的元素,那么就意味着索引5之后的所有的元素将全部向前推进,所以删除的速度是相当慢的

LinkedLIst

对于则增加,删除,修改,删除,首选是LinkedLIst 因为在底层的数据结构是链表的形式出现,当删除某一个的时候仅仅只需要让前面的元素重新链上下一个即可,反之如果LinkeList对于查询,时很慢的,比如当前LinkedList1000个元素,查询索引为100中的元素,此时的LinkeList会从地0个元素一个找,直到找到为止,

Java se帮助文档的解释

所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端), LinkeList 也不是同步的。

 

Set基本数据结构

 

HashSet

 

HashSet是无序的,底层数据结构是哈希表,该集合是线程不同步的,HashSet 集合是通过hashCode方法和equals方法来完成的唯一性的判断。
如果hashCode值相同,再继续判断元素的equals方法是否为true
如果hashCode值不同,不会判断equals方法。 这就是为什么在复写equals 方法的时候也要复写hashCode 方法,因为如果不复写hashCode 方法在HashSet 比较的时候基本上不会相等,测试代码

 

public class test3 {创建一个test3的类, 只包含 name 属性

String name;

@Override

public int hashCode() {

return 1;

}

@Override

public boolean equals(Object obj) {

test3t = (test3)obj;

if(this.name==t.name ){

return true;

}

return super.equals(obj);

}

}

 

 

 

public class test2{

public static void main(String[]args) {

test3 t1 = new test3();

test3 t2 = new test3();

test3 t3 = new test3();

test3 t4 = new test3();

test3 t5 = new test3();

test3 t6 = new test3();

HashSet<test3>h = new HashSet<test3>();

h.add(t1);

h.add(t2);

h.add(t3);

h.add(t4);

h.add(t5);

h.add(t6);

 

System.out.println(h.size()); 打印的结果大小是1

}

}

 

 

TreeSet

 

是按照自然顺来排序,底层数据结构是对象的hashCode 值,和Comparable接口联合使用实现自然顺序,来排序。测试代码

 

public class test3implements Comparable<Object>{

String name;

int age;

public int compareTo(Object o) {

if(!(o instanceof test3))

throw new RuntimeException("转换异常");

test3t = (test3)o;

if(this.name.hashCode() >t.name.hashCode())

return 1;

if(this.name.hashCode()== t.name.hashCode()){

return 0;// 此代码也可以调用String中的方法。

//return this.name.compareTo(t.name);//

}

return -1;

}

 

public test3(String name ,int age){

this.name= name;

this.age =age;

}

}

 

 

 

 

public class test2{

 

public static void main(String[]args) {

test3 t1 = new test3("d",23);

test3 t2 = new test3("a",2);

test3 t3 = new test3("c",43432);

test3 t4 = new test3("v",6754);

test3 t5 = new test3("e",342432);

test3 t6 = new test3("w",234);

TreeSet <test3>h = new TreeSet <test3>();

h.add(t1);

h.add(t2);

h.add(t3);

h.add(t4);

h.add(t5);

h.add(t6);

Iterator<test3>it= h.iterator();

while(it.hasNext()){

System.out.println(it.next().name);

}

}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 

你可能感兴趣的:(java,框架)