Collection中的接口:List、Set、SortedSet、Queue、第一篇

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/p/10843218.html

我的博客园地址:https://www.cnblogs.com/YQian/

 

猜你喜欢

转载自www.cnblogs.com/YQian/p/10843218.html