黑马程序员_集合类

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

所谓集合就是长度可以变的数组,存储的数据类型也是多变的。
集合按照其存贮结构可以分为两大类,即单列集合Collection和双列集合Map,这种集合的特点就是
如下:
Collection:单列结合类的根接口,他有两个重要的子接口,分别是:List和Set
     其中list的特点就是元素有序,可重复。它的两个重要的实现类就是ArrayList和LinkedList
     Set的特点就是元素无需并且不可重复。它的两个重要的实现类就是HashSet和TreesSet。

Map:       他是双列集合的根接口,由于存储具有键(Key)、值(Value)映射关系的元素,
     每个元素都包含一对键值,Map接口的实现类有HashMap和TreeMap
那么首先介绍:
list接口:
在List接口中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,而且出入的顺序和
取出的顺序都是一致的。List继承了Collection的子类,不但继承了Collection的所有方法,而且还
增加了一些根据元素索引来操作集合的特有方法。
常用的方法:void add(int index, E element):将元素element插入到List集合的index处:
     Boolean addAll(int index,Collection c):
     将集合c所包含的所有元素插入到List集合中
     Object get(int index):返回到集合索引index处的元素。
     Object remove(int index):删除index索引处的元素。
     Object set(int index,Object element):将索引index处元素替换成element
     对象,并将替换后的元素返回。
     int indexOf(Object o):返回对象o在List集合中出现的位置索引。
     int lastIndexOf(Object o):返回对象o在List集合中最后一次出现的位置索引。
     List subList(int fromIndex,int toIndex):返回从索引fromIndex(包括)到
  toIndex(不包括)处所有元素集合组成的子集合。

ArrayList:
它的内部封装了一个长度可变的数组对象,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来
存储这些元素,因此可以讲ArrayList集合看做一个长度可变的数组。

import java.util.*;
public class Example01{
 public static void mian(String[] args){
 ArrayList list=new ArrayList();
 list.add("stu1");
 list.add("stu2");
 list.add("stu3");
 list.add("stu4");
 System.out.println("集合的长度:"+list.size(););//获取集合中的元素的个数
 System.out.println("第2个元素是:"+list.get(1));//取出并打印指定元素的位置。
}}


LinkedList 集合
LinkedList集合内部维护了一个双向循环链表。链表中每一个元素都使用引用的方式来记住它的前一个元素和后一个元素
从而可以将所有的元素彼此链接其阿里,当插入一个新元素时,只需要修改元素之间的这种引用关系
所以LinkedList集合对于元素的增删操作具有很高的一个效率。
常用的方法的方法。
void add(int index,E element):在此列表中指定的位置插入指定的元素。
void addFirst(Objext o):将指定元素插入此列表的开头。
void addLast(Object o):将指定元素添加到此列表的结尾。
Object getFirst():返回此列表的一个元素。
Object getLast():返回此列表的最后一个元素。
Object removeFirst():移除并返回此列表的第一个元素。
Object removeLast();移除并返回此列表的最后一个元素。

import java .util.*;
public class Example02{
public static void main(String[] args){
 LinkedList link=new LinkedList();//这个地方是创建LinkedList集合
 link.add("stu1");
        link.add("stu2");
 link.add("stu3");
 link.add("stu4");
System.out.println(Link.toString());
 link.remove(3);
 link.removeFirst();
System.out.println(link);
}
}


iterator接口:
Collection接口与Map接口主要用于存储元素,而Iterator主要是用于迭代访问(即遍历)
Collection中的元素,因此Iterator对象也是被称为迭代器;

import java.util.*;
public static void main(String[] args){
 ArrayList list=new ArrayList();
 list.add("data_1");
 list.add("data_2");
 list.add("data_3");
 list.add("data_4");
 Iterator it=List.iterator();
 while(it.hasNext()){
 Object obj=it.next();
 System.out.println(obj);
  
 }
 }
}


ListIterator 接口
JDK中定义了一个ListIterator迭代器,它是Iterator的子类,该类在父类的基础上增加了一些
特有的方法:
void add(Object o):将指定的元素插入列表(可选操作)。
boolean hasPrevious():如果以逆向遍历列表,列表迭代器有多个元素,则返回true;
Object previous():返回列表中的前一个元素。
void remove():从列表中移除有next或previous返回的最后一个元素(可选操作)

import java.util.*;
public class Example{
 public stativ void main(String[] args){
  ArrayList list=new ArrayList();
  list.add("data_1");
  list.add("data_2");
  list.add("data_3");
  list.add("data_4");
 System.out.println(list);
 ListIterator it=List.ListIterator(list.size);//获得ListIteratortor对象
 while(it.hasPrevious()){
 Object obj=it.previous();
 System.out.println(obj+" ");
  
 }
 }
}


Enumeration接口
JDK中提供了一个Vector集合,该集合是List接口的一个实现类,用法与Arraylist完全相同,区别
在于Vector集合是线程安全的,而Arrsylist集合是线程不安全的。

import java.util.*;
public class Example{
 public stativ void main(String[] args){
  ArrayList list=new ArrayList();
  list.add("data_1");
  list.add("data_2");
  list.add("data_3");
  list.add("data_4");
 System.out.println(list);
 ListIterator it=List.ListIterator(list.size);//获得ListIteratortor对象
 while(it.hasPrevious()){
 Object obj=it.previous();
 System.out.println(obj+" ");
  
 }
 }
}


 

----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

 

你可能感兴趣的:(黑马程序员_集合类)