Collection中的子接口:
LIst接口:可以存放重复的内容
Set接口:不能存放重复的内容,所有重复的内容是靠hashCode()和equals()两个方法区分的
SortedSet接口:可以对集合中的数据进行排序
Queue接口:队列接口
LIst接口常用的子类:ArrayList、LinkList、Vector
ArrayList:
验证增加数据的操作:
package com.list; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class ArrayLiatDemo01 { public static void main(String[] args) { List<String> allList = null; //定义List对象 Collection<String> allCollection = null; //定义Collection对象 allList = new ArrayList<String>(); //实例化List对象,只能是String类型 allCollection = new ArrayList<String>(); //实例化Collection对象,只能是String类型
/*List<String> allList = new ArrayList<String>();
Collection<String> allCollection = new ArrayList<String>();*/
allList.add("hello"); //从Collection继承的方法 allList.add(0,"world"); //List的扩充方法 System.out.println(allList); //输出集合中的内容 allCollection.add("YQ"); //增加数据 allCollection.add("www.qq.com"); //增加数据 System.out.println(allCollection); //输出集合中的内容 allList.addAll(allCollection); //从Collection继承的方法,增加一组对象 allList.addAll(0,allCollection); //List自定义方法,增加一组对象 System.out.println(allList); //输出对象,调用ToString()方法 } }
[world, hello]
[YQ, www.qq.com]
[YQ, www.qq.com, world, hello, YQ, www.qq.com]
从运行结果可以发现List中的add(int index, E element)方法可以在集合中的指定位置添加元素,而其他的两种add()方法只能是在集合的最后进行元素的追加。
删除对象:
package com.list; import java.util.ArrayList; import java.util.List; public class ArrayListDemo02 { public static void main(String[] args) { List<String> allList = new ArrayList<String>(); //声明LIst对象,并实例化List对象,且只能是String类型 allList.add("hello"); //添加元素 allList.add(0, "world"); //此方法为List扩展的增加方法 System.out.println(allList); allList.add("YQ"); //增加元素 allList.add("www.baidu.com"); //增加元素 System.out.println(allList); allList.remove(0); //移除指定位置的元素 System.out.println(allList); allList.remove("hello"); //移除指定内容的元素 System.out.println(allList); } }
[world, hello]
[world, hello, YQ, www.baidu.com]
[hello, YQ, www.baidu.com]
[YQ, www.baidu.com]
输出全部元素:
package com.list; import java.util.ArrayList; import java.util.List; public class ArrayListDemo03 { public static void main(String[] args) { List<String> allList = new ArrayList<String>(); //声明LIst对象,并实例化List对象,且只能是String类型 allList.add("hello"); //添加元素 allList.add(0, "world"); //此方法为List扩展的增加方法 System.out.println(allList); allList.add("YQ"); //增加元素 allList.add("www.baidu.com"); //增加元素 System.out.println(allList); System.out.println("由前向后输出"); for(int i=0;i<allList.size();i++) { System.out.printf(allList.get(i)+","); } System.out.println("\n由后向前输出"); for(int i=allList.size()-1;i>=0;i--){ System.out.printf(allList.get(i)+","); } } }
[world, hello]
[world, hello, YQ, www.baidu.com]
由前向后输出
world,hello,YQ,www.baidu.com,
由后向前输出
www.baidu.com,YQ,hello,world,
测试其他操作:
package com.list; import java.util.ArrayList; import java.util.List; public class ArrayListDemo04 { public static void main(String[] args) { List<String> allList = new ArrayList<String>(); //声明LIst对象,并实例化List对象,且只能是String类型 System.out.printf("集合操作前是否为空:"+allList.isEmpty()+"\n"); allList.add("hello"); //添加元素 allList.add(0, "world"); //此方法为List扩展的增加方法 System.out.println(allList); allList.add("YQ"); //增加元素 allList.add("www.baidu.com"); //增加元素 System.out.println(allList); String str[] = allList.toArray(new String[] {});//指定的泛型类型 System.out.println("指定数组类型:"); //输出字符串中的内容 for(int i=0;i<str.length;i++){ System.out.printf(str[i]+"、"); } System.out.println("\n返回对象数组:"); Object obj[] = allList.toArray(); //返回对象数组 for(int i=0;i<obj.length;i++){ //输出对象数组内容 System.out.printf(obj[i]+"、"); } System.out.print("\n"); List<String> allSub=allList.subList(1,2); //该方法返回的是父list的一个视图,从fromIndex(包含),到toIndex(不包含) System.out.printf("结合截取:"); for(int i=0;i<allSub.size();i++){ System.out.printf(allList.get(i)+"、"); } System.out.print("\n"); System.out.println(allList.contains("YQ")?"YQ字符串存在!":"YQ字符串不存在!"); System.out.println("YQ字符串的位置:"+allList.indexOf("YQ")); System.out.println("集合操作后是否为空:"+allList.isEmpty()); } }
集合操作前是否为空:true [world, hello] [world, hello, YQ, www.baidu.com] 指定数组类型: world、hello、YQ、www.baidu.com、 返回对象数组: world、hello、YQ、www.baidu.com、 结合截取:world、 YQ字符串存在! YQ字符串的位置:2 集合操作后是否为空:false
Vector子类:
package com.list; import java.util.List; import java.util.Vector; public class VectorDemo01 { public static void main(String[] args) { /*List<String> allList = null; allList = new Vector<String>(); allList.add("hello"); allList.add(0,"world"); allList.add("YQ"); allList.add("www.baidu.com");*/ Vector<String> allList = new Vector<String>(); allList.add("hello"); allList.add(0,"world"); allList.addElement("YQ"); allList.addElement("www.baidu.com"); for(int i=0;i<allList.size();i++) { System.out.printf(allList.get(i)+"、"); } } }
1 world、hello、YQ、www.baidu.com、
ArrayLiat与Vector的区别:
序号 | 比较点 | ArrayList | Vector |
1 | 推出时间 | JDk1.2之后推出,属于新的操作类 | JDK1.时推出的,属于旧的操作类 |
2 | 性能 | 采用异步处理方式,性能更高 | 采用同步处理方式,性能更低 |
3 | 线程安全 | 属于非线程安全的操作类 | 属于线程安全的操作类 |
4 | 输出 | 只能使用Iterator、foreach输出 | 可以使用Iterator、foreach、Enumeration输出 |
从实际开发来看,ArrayLiat类使用的较多。
LinkedList子类:
为链表增加数据:
1 package com.list; 2 3 import java.util.LinkedList; 4 5 public class LinkedListDemo01 { 6 public static void main(String[] args) { 7 LinkedList<String> link = new LinkedList<String>(); 8 link.add("A"); 9 link.add("B"); 10 link.add("C"); 11 System.out.println("初始化链表:"+link); 12 link.addFirst("X"); 13 link.addLast("Y"); 14 System.out.println("增加表头表尾后的链表:"+link); 15 16 System.out.print("以FIFO方式输出:"); 17 for(int i=0;i<link.size();i++){ 18 System.out.printf(link.get(i)+","); 19 } 20 21 System.out.printf("\n element()方法找到表头:"+link.element()); 22 System.out.printf("\n"+link); 23 System.out.printf("\n prrk()方法找到表头:"+link.peek()); 24 System.out.printf("\n"+link); 25 System.out.printf("\n poll()找到表头并删除表头:"+link.poll()); 26 System.out.printf("\n"+link); 27 } 28 29 }
1 初始化链表:[A, B, C] 2 增加表头表尾:[X, A, B, C, Y] 3 以FIFO方式输出:X,A,B,C,Y, 4 element()方法找到表头:X 5 [X, A, B, C, Y] 6 prrk()方法找到表头:X 7 [X, A, B, C, Y] 8 poll()找到表头并删除表头:X 9 [A, B, C, Y]
我的博客园地址:https://www.cnblogs.com/YQian/
Collection中的接口:List、Set、SortedSet、Queue、第一篇
原文:https://www.cnblogs.com/YQian/p/10843218.html