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)+"、");
}
}
}
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/p/10843218.html
我的博客园地址:https://www.cnblogs.com/YQian/