ArrayList
// 存储的数据有序,可重复,内部使用 数组 存储数据
ArrayList one = new ArrayList();
//放数据用add,一般存储相同类型的数据
one.add("零");
one.add("一");
one.add("二");
one.add("三");
ArrayList two = new ArrayList();
two.add("四");
two.add("五");
//指定索引位置,插入数据
one.add(4,"四——");
one.addALL(two);//获取two的数据,并不改变数据
for(int i=0; i<one.size(); i++)//通过遍历获取全部数据,用size()获取集合(容器)有多少个元素
System.out.println(one.get(i));//获取数据,用get方法获取索引,默认从0开始
//用get()方法获取的数据是Object类型,通过强制类型转换获取想要的数据类型,但必须与添加时的数据类型一样
//输出结果:零一二三四——四五
//通过索引删除 和 直接输入数据
one.remove("一");//删除数据
one.remove(0);
//conctains判断集合(容器)是否有此数据,是true反之false
System.out.println(one.contains("三"));
//集合(容器)转化为数组
Object[] oarray =one.toArray();
for(int i =0;i<oarray.length;i++)
System.out.println(oarray[i]);
//输出结果:二三四——四五
//遍历器遍历数据
ArrayList on = new ArrayList();
on.add(0);
on.add(1);
on.add(2);
//Iterator.next()会遍历集合(容器)的数据
//按顺序输出,类似于指针++,当道达最后一个元素输出后,跳到下一个元素,而最后没有元素,会出现错误
//当指针到达最后一个元素时,之后没有数据,指针会指向一个空,因此next()会出现错误
//可以用hasnext()来判断是否与下一个元素
Iterator iterator = on.iterator();
while(iterator.hasnext())
{
System.out.println(iterator.next());
}
//输出:123
//输出:二
//Object和for - each 遍历数据
for(Object o : on)
{
System.out.println(o);
}
举例:
package 集合类;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayList_try
{
public static void main(String[] args) {
ArrayList<String> a_list = new ArrayList<String>();
a_list.add("小明");
a_list.add("小华");
a_list.add("小芳");
a_list.add("小刚");
for (int i = 0; i < a_list.size(); i++)
{
System.out.println(a_list.get(i));
}
// 判断是否有某个字符串
if (a_list.contains("小明"))
{
System.out.println("小茗同学");
a_list.add("小茗同学");
}
// 定义另一个集合
ArrayList<String > t_List = new ArrayList<String>();
t_List.add("pig");
t_List.add("dag");
t_List.add("cat");
// 将另一个集合的数据传递个第一个集合
a_list.addAll(t_List);
// 在第五个后面填上数据
a_list.add(5, "又又");
// 移除数据
a_list.remove(3);
a_list.remove("小明");
System.out.println("\n");
// 遍历
// 方法一:
// for (String o : a_list)
// {
// System.out.println(o);
// }
// 方法二:
Iterator<String> iterator = a_list.iterator() ;
{
while(iterator.hasNext())
System.out.println(iterator.next());
}
}
}
Vector类
//与ArrayList类似
Vector v= new Vector();
//add()
//get()
//remove()
/**
Vector与ArrayList主要区别:线程是否安全,Vector安全,ArrayList不安全
一般在多线程中使用Vector
*/
//遍历
for(Objcct o : v)
{
System.out.println(o);
}
LinkedList类
//内部使用 引用 存储数据
//优势:可以方便的插入数据,删除数据
//声明——————与ArrayList相似
LinkedList ll = new LinledList();
//add()
ll.addFirst();//在集合(容器)到第一个位置添加数据
ll.addLast();//在集合(容器)最后添加数据
//遍历
for(Object o: ll)
{
System.out.println(o);
}
HashSet
//哈希值
//声明
HashSet set = new HashSet();
//ArratList,Vector,LinkedList可添加重复数据,有序
//HashSet不能添加重复数据,会自动去重,且无序
TreeSet
//声明
TreeSet set = new TreeSet();
//与HashSet一样数据是无序的
HashMap 与 Hashtable
HashMap 与 HashTable 相似,HashMap线程不安全,HashTable线程安全
//声明
HashMap map = new HashMap();
//HashMap里保存的是 键值对
//number是要保存的值 ,可以重复——“钥匙”
//"lock"引号内是指向保存的值——“锁”,其不能重复,如果重复会把之前的值覆盖
//两者关系相当于锁与钥匙的关系
//map.put("lock",number)
// 获取值
map.get(" ");
//例如:
map.put("good",745);
map.put("good",521);
int a = map.get("good");//值为521,如果有两个名称一样,后面的覆盖前面已存在的
//遍历
//key.set()获取“锁”
for(Object o: map.keySet())
{
System.out.println(o+"-"+map.get(o);
}
//values() 获取"钥匙"的值
for(Object value : map.values())
{
System.out.println(value);
}
//containsKey()判断某个“锁”是否存在,返回布尔值,包含true,反之false
map.containsKey("bad");
//contiansValue() 判断某个“钥匙”是否存在
TreeMap
//与HashMap相似,存储结构不同
//put()
//get()
//keyset()
//values()
//containsKey()
//containsValue()
小结:
Collection——存储单个值
List 可重复,有序
ArrayList
Vector
LinkedList
Set 不可重复,无序
HashSet
TreeSet
Map——存储键值对
HashMap
TreeMap
HashTable