/*
* Collection
* |--List:元素是有序的,元素可以重复,该集合中有索引
* |--ArrayList:底层的数据结构使用的是数组结构。特点:查询速度很快。但是增删稍慢。线程不同步。
* |--LinkedList:底层使用的链表数据结构。特点:增删速度很快,查询稍慢。线程不同步。
* |--Vector:底层是数组数据结构。线程同步。被ArrayList替代了。因为效率低。
*
* |--Set: 元素是无序的,元素不可用重复
* |-- HashSet:底层数据结构是哈希值。
* HashSet是如何保证元素的唯一性的呢?
* 是通过元素的两个方法:hashCode()和 equals()来完成
* 如果元素的HashCode值相同,才会用equals()来判断施是否是同一个对象;
* 如果元素的HashCode值不相同,不会调用equals().
* |-- TreeSet:可以对Set集合中的元素进行排序。
* Map
* |--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。 效率低。
* |--HashMap:底层是哈希表数据结构,允许使用 null 值和 null 键,该集合是不同步的。将hashtable替代, 效率高。
* |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
*
*
*
* 【迭代器】:Iterator 接口
*
* Iterator 对象 通过集合的 iterator() 方法获取
* Iterator<String> it = al.iterator();
*
* 【方 法】:
* 判断时候还有下一个元素:boolean hasNext();
* 返回迭代的下一个元素: E next()
*
*
* List:
* 特有方法:凡是可以操作角标的方法都是该系特有的方法;
*
* 【增】
* add(index.element);
* addAll(index,Collection);
*
* 【删】
* remove(index);
*
* 【改】
* set(index,element)
*
* 【查】
* get(index);
* subList(from,to);
* listIterator();
*
*/
package collection;
import java.util.*;
public class ListDemo1 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_1();
}
public static void demo_1()
{
ArrayList al = new ArrayList();
al.add("java1");
al.add("java2");
al.add("java3");
sop("原集合:"+al); //原集合:[java1, java2, java3]
al.add(1, "添加的元素"); //在指定索引处 添加元素
sop("添加后:"+al); //添加后:[java1, 添加的元素, java2, java3]
al.remove(2); //删除指定索引的元素
sop("删除后:"+al);
al.set(2,"修改的元素");
sop("修改后:"+al);
sop("通过索引获取一个元素:"+al.get(1));
//获取所有
for(int x=0;x<al.size();x++)
{
sop("al["+x+"]="+al.get(x));
}
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}