ArrayList:有序、可重复、线程不安全、内部使用数组进行存储
LinkedList:有序、可重复、线程不安全、内部使用引用进行存储【可以很方便的进行插入、删除数据】
Vector:有序、可重复、线程安全
HastSet:无序、不可重复(自动去重)
TreeSet存放数据是有序的
HashSet存放数据是无序的
一、ArrayList集合类的简单创建和使用
创建一个集合对象
ArrayList arr = new ArrayList();
往集合中添加数据【arr.add(Object)】
arr.add("小明");
通过索引从集合中取得对象【arr.get(Index)】
arr.get(1)
packagecom.Gary.arryaylist;importjava.util.ArrayList;public classArrayListDemo {public static voidmain(String[] args){//集合对象ArrayList arr = newArrayList();//往集合中添加对象
arr.add("小明");
arr.add("小红");
arr.add("小梁");//使用索引添加对象
System.out.println(arr.get(0));
}
}
ArrayListDemo.java
二、ArrayList集合里面数据的添加和数据的遍历
往一个集合中添加一个集合(多条数据)
//创建多条数据
ArrayList arr2 = newArrayList();
arr2.add("Gary");
arr2.add("Gary2");//往集合中添加多条数据
arr.addAll(arr2);
在制定位置插入一个数据【arr.add(Index,Object)】
arr.add(4,"Garyyy");
遍历集合
//使用for循环遍历
for(int i=0;i
{
System.out.println("遍历:"+arr.get(i));
}
packagecom.Gary.arryaylist;importjava.util.ArrayList;public classArrayListDemo {public static voidmain(String[] args) {//集合对象ArrayList arr = newArrayList();//往集合中添加一条数据
arr.add("小明");
arr.add("小红");
arr.add("小梁");//创建多条数据
ArrayList arr2 = newArrayList();
arr2.add("Gary");
arr2.add("Gary2");//往集合中添加多条数据
arr.addAll(arr2);//使用索引添加对象取得第四号元素Gary
System.out.println("1:"+arr.get(3));//在制定位置插入一个数据
arr.add(4,"Garyyy");//使用索引添加对象取得第四号元素Gary
System.out.println("2:"+arr.get(3));//使用for循环遍历
for(int i=0;i
{
System.out.println("遍历:"+arr.get(i));
}
}
}
ArrayListDemo.java
三、ArrayList集合中数据的移除和数据访问
删除指定数据【arr.remove(Index)】
arr.remove(1);
删除arrayList集合中"Gary"【arr.remove(Object)】
arr.remove("Gary");
判断集合是否为空【arr.isEmpty()】
判断集合是否包含某个元素arr.contains(Object)
arr.contains("Gary")
packagecom.Gary.arryaylist;importjava.util.ArrayList;public classArrayListDemo {public static voidmain(String[] args) {//集合对象ArrayList arr = newArrayList();//往集合中添加一条数据
arr.add("小明");
arr.add("小红");
arr.add("小梁");//创建多条数据
ArrayList arr2 = newArrayList();
arr2.add("Gary");
arr2.add("Gary2");//往集合中添加多条数据
arr.addAll(arr2);//使用索引添加对象取得第四号元素Gary//System.out.println("1:"+arr.get(3));//在制定位置插入一个数据
arr.add(4,"Garyyy");//使用索引添加对象取得第四号元素Gary//System.out.println("2:"+arr.get(3));//使用for循环遍历//for(int i=0;i
arr.remove(1);//删除arrayList集合中"Gary"
arr.remove("Gary");//使用for循环遍历
for(int i=0;i
{
System.out.println("遍历:"+arr.get(i));
}//判断集合是否为空
System.out.println("集合是否为空:"+arr.isEmpty());//判断集合是否包含某个元素
System.out.println("集合是否包含Gary:"+arr.contains("Gary")); //已经移除
System.out.println("集合是否包含Gary:"+arr.contains("Gary2")); //存在Gary2
Object[] oArray=arr.toArray();for(int i=0;i
{//使用数值进行遍历
System.out.println("数据遍历:"+oArray[i]);
}
}
}
ArrayListDemo.java
此时arrayList集合中还存在的元素有:小明、小梁、Garyyy、Gary2
四、使用遍历器和增强版for循环遍历ArrayList集合
创建一个遍历器Iterator
Iterator iterator = arr.iterator();
按Index索引下标0开始遍历,遍历Iterator中的元素
System.out.println(iterator.next());
packagecom.Gary.arryaylist;importjava.util.ArrayList;importjava.util.Iterator;public classArrayListDemo {public static voidmain(String[] args) {//集合对象ArrayList arr = newArrayList();//往集合中添加一条数据
arr.add("小明");
arr.add("小红");
arr.add("小梁");//创建多条数据
ArrayList arr2 = newArrayList();
arr2.add("Gary");
arr2.add("Gary2");//往集合中添加多条数据
arr.addAll(arr2);//在制定位置插入一个数据
arr.add(4,"Garyyy");//删除第一个数据"小明"
arr.remove(1);//删除arrayList集合中"Gary"
arr.remove("Gary");//使用Iterator遍历器进行遍历
Iterator iterator =arr.iterator();//按Index索引下标0开始遍历,遍历三个元素
System.out.println(iterator.next());//System.out.println(iterator.next());//System.out.println(iterator.next());
while(iterator.hasNext())
{//使用遍历器进行遍历
System.out.println("Iterator遍历:"+iterator.next());
}//增强版for循环
for(Object o:arr)
{
System.out.println("增强版for循环:"+o);
}
}
}
ArrayListDemo.java
五、关于Vector集合类的使用
创建一个Vector集合
Vector v = new Vector();
往集合中添加元素【v.add(Object)】
v.add("Gary");
通过索引删除Vector集合中的元素【v.remove(index)】
v.remove(1);
packagecom.Gary;importjava.util.Vector;public classVectorDemo {public static voidmain(String[] args) {Vector v= newVector();
v.add("Gary");
v.add("Gary1");
v.add("Gary2");
v.add("Gary3");for(Object o :v) {
System.out.println("使用增强for循环:"+o);
}//得到Vector中的第二个元素
System.out.println(v.get(1));//移除第二个元素
v.remove(1);for(Object o:v){
System.out.println("第二次使用增强for循环:"+o);
}
}
}
VectorDemo.java
六、LinkedList集合类的使用
LinkedList集合多了两个方法,可以在列表的首位添加元素
内部使用引用进行数据的存储
ll.addFirst();
ll.addLast();
packagecom.Gary;importjava.util.LinkedList;public classLinkedListDemo {public static voidmain(String[] args) {LinkedList ll= newLinkedList();
ll.add(1);
ll.add(2);
ll.add(3);
ll.add(4);//在列表的首位添加元素
ll.addFirst(100);
ll.addLast(200);for(Object o:ll){
System.out.println("使用增强for循环:"+o);
}
}
}
LinkedListDemo.java
七、集合中泛型的使用
直接创建一个新集合时
ArrayList al = new ArrayList();
ArrayList创建的是一个Object类型,可以在创建ArrayList后边添加一个泛型
//泛型 ArrayList中只能存储Int类型
ArrayList al = new ArrayList();
其它集合的泛型
//ArrayList al = new ArrayList();//泛型中不能直接存放基本数据类型->基本类型的刨床类
//数据里边可以存储 引用类型 和 其它类型//泛型 ArrayList中只能存储Int类型
ArrayList al = new ArrayList();//泛型 Vector中只能存储String类型
Vector v = new Vector();//泛型 LinkedList中只能存储字符
LinkedList ll = new LinkedList();
packagecom.Gary;importjava.util.ArrayList;importjava.util.LinkedList;importjava.util.Vector;public classGary {public static voidmain(String[] args){//ArrayList al = new ArrayList();//泛型中不能直接存放基本数据类型->基本类型的刨床类//泛型 ArrayList中只能存储Int类型ArrayList al = new ArrayList();//泛型 Vector中只能存储String类型
Vector v = new Vector();//泛型 LinkedList中只能存储字符
LinkedList ll = new LinkedList();
}
}
Gary.java
八、HashSet集合类的使用
创建HastSet集合类
HashSet set = new HashSet();
HashSet 自动去重、无序
packagecom.Gary;importjava.util.HashSet;public classHashSetDemo {public static voidmain(String[] args) {//ArrayList LinkedList Vector 可以添加重复数据、有序、按照添加顺序排列//HashSet 自动去重、无序//无法通过索引获取到某个元素
HashSet set = newHashSet();
set.add("Gary");
set.add("Gary1");
set.add("Gary2");
set.add("Gary3");
set.add(1);
set.add("Gary");for(Object o : set)
{
System.out.println("增强版for循环"+o);
}
}
}
HashSetDemo.java
九、TreeSet集合类的使用
TreeSet和HashSet区别:
TreeSet存放数据是有序的
HashSet存放数据是无序的
packagecom.Gary;importjava.util.TreeSet;public classTreeSetDemo {public static voidmain(String[] args){//输出有序的TreeSet set = newTreeSet();
set.add("Gary1");
set.add("Gary2");
set.add("Gary3");
set.add("Gary4");
set.add("Gary5");for(Object o : set){
System.out.println("增强for循环:"+o);
}
}
}
TreeSetDemo.java
十、使用集合存储自定义类的类型数据
创建自定义Student学生类,添加两个属性
private intage;private String name;
packagecom.Gary;public classStudent {private intage;privateString name;public Student(intage, String name) {super();this.age =age;this.name =name;}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}
}
Student.java
创建一个集合,用于存储Student学生类型
ArrayList al = new ArrayList();
packagecom.Gary;importjava.util.ArrayList;public classGary01 {public static voidmain(String[] args) {ArrayList al = new ArrayList();
Student s= new Student(20,"Gary");
al.add(s);for(Student temp : al){
System.out.println("年龄:"+temp.getAge()+" 名字:"+temp.getName());
}
}
}
Gary01.java
十一、HashMap集合类的创建和使用
HashMap集合以键值对key -- value去存储数据
所有的key是不可以重复的 -> key重复会照成数据的覆盖
所有的value是可以重复的
packagecom.Gary;importjava.util.HashMap;public classHashMapDemo {public static voidmain(String[] args){//HashMap里面保存的是键值对 key - value//所有的key不可以重复//所有的value不可以重复HashMap map= newHashMap();
map.put("Gary", 20);
map.put("Gary", 21); //覆盖键值对,如果相同的话,会把之前的值给覆盖掉
map.put("Gary", 21);
map.put("Gary2", 22);
System.out.println(map.get("Gary"));for(Object key : map.keySet()) {
System.out.println("通过键值对去取得值:"+key+"---"+map.get(key));
}
}
}
HashMapDemo.java