下面我们先来梳理一下它们之间的关系
从大的方面来讲list集合是有序的,不唯一的
而set集合是无序的,唯一的
一.ArrayList集合的常见用法
import java.util.ArrayList;
public class t1 {
public static void main(String[] args) {
ArrayList list=new ArrayList();//Arraylist集合适合查找不适合大量增删
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
//获取集合中的元素
System.out.println("集合的长度"+list.size());
//打印出指定位置的元素
System.out.println("第二个元素是:"+list.get(1));
//删除索引为3的元素
list.remove(3);
System.out.println("删除索引为3的元素"+list);
//替换索引为1的元素为李四2
list.set(1,"李四2");
System.out.println("替换索引为1的元素为李四2:"+list);
}
}
二、 LinkedList常见用法
LinkedList比较适用于查找而ArrayList比较适用于查找
import java.util.LinkedList;
public class t2 {
public static void main(String[] args) {
LinkedList list=new LinkedList();//LinkedList适合用作大量的增删但是不适合用作大量查找
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
System.out.println(list.toString());//获取并打印集合中的元素
System.out.println();
System.out.println(list);//获取集合中的元素
list.add(3,"student");
System.out.println(list);
//取出集合中第一个元素
System.out.println(list.getFirst());
list.remove(3);//删除集合中索引为3的元素
list.removeFirst();//删除集合中第一个元素
System.out.println(list);
}
}
三、迭代器的用法
迭代器我们需要去注意的就是两个常见的方法
第一个就是hasNext()判断集合中是否存在下一个元素
第二个就是next()方法将元素取出
需要注意的是如果next()方法没有取到元素则会抛出异常
import java.util.ArrayList;
public class t3 {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
Iterator it=list.iterator();
while(it.hasNext()){
Object obj=it.next();
System.out.println(obj);
}
}
}
四、forearch循环
当使用forearch循环遍历集合和数组时,只能访问其中的元素,不能对其中的元素进行修改
import java.util.ArrayList;
public class t4 {
public static void main(String[] args) {
ArrayList list=new ArrayList();
list.add("张三");
list.add("李四");
list.add("王五");
//使用foreach循环遍历集合
for(Object it:list){
System.out.println(it);//取出并去打印集合中的元素
}
}
}
Set集合
Set接口中的元素是无序的,并且都会以某种规则保证存入的元素不出现重复,也就是去重的功能
五、HashSet集合
HashSet是Set接口的一个实现类,,它存储的元素是不可重复的
import java.util.HashSet;
import java.util.Iterator;
public class t5 {
public static void main(String[] args) {
HashSet set=new HashSet();
set.add("张三");
set.add("张三");
set.add("李四");
set.add("王五");
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
六、LinkedHashSet集合
HashSet存储的元素是无序的,如果想要元素的存储顺序一致,可以使用java提供LinkedHashSet类,LinkedHashSet类是HashSet的子类,与LinkedList一样,它是使用双向链表来维护内部元素关系的
import java.util.Iterator;
import java.util.LinkedHashSet;
public class t6 {
public static void main(String[] args) {
LinkedHashSet set=new LinkedHashSet();
set.add("张三");
set.add("张三");
set.add("李四");
set.add("王五");
Iterator it=set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
七、TreeSet集合
TreeSet是Set接口的另一个实现类,它内部采用二叉树存储元素,这样的结构可以保证集合中没有重复的元素
import java.util.TreeSet;
public class t8 {
public static void main(String[] args) {
//TreeSet集合添加元素时,不论元素的添加顺序如何,这些元素都能按照一定的顺序排列
//集合中的元素进行比较时都会调用compareTo()方法,该方法是在Comparable接口中定义的
TreeSet ts=new TreeSet();//创建集合
//向集合中去添加元素
ts.add(3);
ts.add(29);
ts.add(101);
ts.add(21);
System.out.println("创建的TreeSet集合为:"+ts);
//获取收尾元素
System.out.println("首元素为:"+ts.first());
System.out.println("尾元素为"+ts.last());
}
}
Map集合
Map集合是一种双列的集合,它的每一个元素都有对应的key值和对应的value值,HashMap集合中的键具有唯一性
八、HashMap集合
import java.util.HashMap;
import java.util.Map;
public class t9 {
public static void main(String[] args) {
Map map=new HashMap();//多态
map.put("1","张三");
map.put("2","李四");
map.put("3","王五");
System.out.println("1:"+map.get("1"));
System.out.println("2:"+map.get("2"));
System.out.println("3:"+map.get("3"));
}
}
简而言之:键相同,值覆盖
九、LinkedHashMap集合
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class t10 {
public static void main(String[] args) {
Map map=new LinkedHashMap();
map.put("3","李四");
map.put("2","王五");
map.put("4","赵六");
Set keySet=map.keySet();
Iterator it=keySet.iterator();
while(it.hasNext()){
Object key=it.next();
Object value=map.get(key);
System.out.println(key+":"+value);
}
}
}