Java集合类的详解与应用

4.分类:集合分为:Collection(接口):

List接口:ArrayList类,LinkedList类,Vector类

Set接口:HashSet类,TreeSet类

Map接口:

HashMap类

TreeMap类

(相比较数组的概念: 数组:可以存储不同类型的数据 可以存储简单数据类型和引用数据类型 缺点:创建的数组长度是一个定值,只能存储固定长度的数据)

5.详细方法和注意项:

Collection是一个接口,所以无法实例化,

即Collection只能类似于Collection collection = new ArrayList();创建对象

1)List:存储是有序的(即存储的顺序,不是排序),存储的元素可以重复

ArrayList:底层结构是数组,线程是不安全的,添加删除慢(因为是数组的结构),查找快

LinkedList:底层结构是链表,线程是不安全的,添加删除快(因为是链表的结构),查找慢

Vector:底层结构是数组,线程是安全的,添加删除慢,查找快,(同ArrayList)

Collection的方法:

//方法

Collection collection=new ArrayList();
collection.add("Java2");
collection.addAll();
collection.remove();
collection.removeAll();
collection.clear();
collection.size();

System.out.println(collection.contains("java1"));// false
 System.out.println(collection.containsAll(collection1));// false

System.out.println(collection.isEmpty());// false

System.out.println(collection.equals(collection));// true
Object[]arr=collection.toArray();// 集合变数组:希望将集合的长度固定下来

// 获取:
// Iterator<E> iterator() //获取集合中的对象(迭代器)
// int size() //获取集合中对象的个数
//hasNext()判断当前位置是否有元素,如果有返回true没有返回false
 //next()将当前位置的元素取出,并且让指针指向下一个位置
//程序给每一个集合都准备了一个属于自己的迭代器对象,我们获取对象的方法是调用集合的一个方法


Iterator iterator=collection.iterator();
 while(iterator.hasNext()) {
 Object obj=iterator.next();
 System.out.println(obj+" iterator");
 }


//注意:

//1.再次遍历会报错因为指针在上次遍历时在最后位置,如果需要重新遍历需要将指针移到最开始的位置,所以需要重新获取迭代器的对象Iterator iterator=collection.iterator();
 //2.集合中可以存放不同类型的元素 collection.add(new Integer(22));


//容错处理:当集合中存储了不同类型的元素,需要进行容错处理
Iterator iterator2=collection.iterator();
 while (iterator2.hasNext()) {
 Object object = iterator2.next();
// System.out.println(object+" iterator");
 //容错处理:过滤掉integer类型的22
 if(object instanceof String) {
 //向下转型
String string =(String)object;
 System.out.println(string+" S");
 }
 }
 //获取当前元素个数
System.out.println(collection.size());//4

}

LinkedList的特有方法

// LindedList
        // 特有的方法:
        //
        // addFirst()//始终在首位添加
        // addLast()//始终在末尾添加
        //
        // getFirst()//获取的对象不存在会发生异常
        // getLast()
        //
        // removeFirst()//删除的对象不存在会发生异常
        // removeLast()
        //
       
        // 从jdk1.6开始出现以下方法
        // offerFirst()
        // offerLast()
        //
        // peekFirst()//获取的对象不存在会返回null
        // peekLast()
        //
        // pollFirst()//删除的对象不存在会返回null
        // pollLast()

2)Set:没有顺序,不可以重复

HashSet:底层是哈希表,线程是不安全的

TreeSet:底层是树,线程是不安全的

HashSet重写hashCode()和equals()方法

*    HashSet实现元素不重复的过程:
    *        使用的是元素内部的HashCode()和equals(),首先调用HashCode()方法比较两个对象的哈希值,
    *        如果哈希值不相等,认为是两个对象,就不会再去调用equals()方法了,如果相等再去调用equals()方法,如果返回true,就认为是一个对象,否则认为是两个对象

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c959fe486945ef52ddac77b2aa651187.html