JAVA类集框架笔记(一)

一、基本概念 :

        1、所谓类集就是一个动态的对象数组,是对一些实现好的数据结构和算法进行包装,方便使用。而且类集框架本身不受对象数组的长度限制。

        2、为了实现类集容易扩展和修改的特性,类集框架被设计成包含了一组标准接口。常用的类集接口是 : Collection 、List 、Set 、Map 、Iterator 、ListIterator 、Enumeration 、SortedSet 、SortedMap 、Queue 、Map.Entry 

        3、Collection接口是集合框架的最大接口,但是如果直接使用Collection接口进行操作的话,则表示的操作意义不明确,因此,在实际开发中不提倡直接使用Collection接口进行开发,而基本上都是使用其子接口 。

二、List接口

       如果要使用List接口进行操作,则必须依靠其子类实现对象的实例化,在实际开发中,List子接口有 ArrayList 、 LinkedList 等常用子类 。

(一) ArrayList :

1、使用 ArrayList 实现向集合中增加元素,代码如下 :

import java.util.ArrayList ;
import java.util.Collection ;
import java.util.List ;
 
 public class ArrayListDemo{
    public static void main(String[] args){

        List<String> allList = new ArrayList<String>() ;                  //定义并实例化List对象,指定String类型
	Collection<String> allCollection = new ArrayList<String>() ;  //定义并实例化Collection对象,指定String类型

	allList.add("Hello") ;                        //从Collection接口中继承的方法,向集合中增加数据
	allList.add(0,"World") ;                      //List接口扩充的方法,向集合中指定位置增加数据
	System.out.println(allList) ;                 //输出集合中的内容

	allCollection.add("abc");                     //增加数据
	allCollection.add("jkl");                     //增加数据

	allList.addAll(allCollection) ;               //从Collection接口中继承的方法,向集合中增加一组对象
	allList.addAll(0,allCollection) ;             //此方法List自定义,向集合中指定位置增加一组对象
	System.out.println(allList) ;                 //增加对象,调用toString()方法

    }
 }

程序运行结果 :

    

2、使用 ArrayList 删除集合中的元素 ,代码如下 :

import java.util.ArrayList ;
import java.util.List ;
 
 public class ArrayListDemo02{
    public static void main(String[] args){

    List<String> allList = new ArrayList<String>() ;         //定义并实例化List对象,指定String类型
	
	allList.add("Hello") ;                        //从Collection接口中继承的方法,向集合中增加数据
	allList.add(0,"World") ;                      //List接口扩充的方法,向集合中指定位置增加数据
	allList.add("abc");                           //增加数据
	allList.add("jkl");                           //增加数据

	allList.remove(0) ;                           //删除指定位置的元素
	allList.remove("Hello") ;                     //删除指定内容的元素
	System.out.println(allList) ;                 //增加对象,调用toString()方法

    }
 }

程序运行结果 :

      

3、使用 size()和get(int index)两个方法输出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对象,指定String类型
	
	allList.add("Hello") ;                        //从Collection接口中继承的方法,向集合中增加数据
	allList.add("Hello") ;                        //List接口可以存放重复的内容
	allList.add(0,"World") ;                      //List接口扩充的方法,向集合中指定位置增加数据
	allList.add("abc");                           //增加数据
	allList.add("jkl");                           //增加数据
	
	System.out.print("由前向后输出:") ;
        for(int i=0;i<allList.size();i++){
	    System.out.print(allList.get(i) +  "、") ;
	}
	System.out.print("\n\n由后向前输出:") ;
	for(int i=allList.size()-1;i>=0;i--){
	    System.out.print(allList.get(i) +  "、") ;
	}
					 
    }
 }

程序运行结果 :

     

4、使用toArray()方法将集合变为对象数组 ,代码如下 :

import java.util.ArrayList ;
import java.util.List ;
 
 public class ArrayListDemo04{
    public static void main(String[] args){

    List<String> allList = new ArrayList<String>() ;         //定义并实例化List对象,指定String类型
	
	allList.add("Hello") ;                        //从Collection接口中继承的方法,向集合中增加数据
	allList.add("Hello") ;                        //List接口可以存放重复的内容
	allList.add(0,"World") ;                      //List接口扩充的方法,向集合中指定位置增加数据
	allList.add("abc");                           //增加数据
	allList.add("jkl");                           //增加数据
	
	String str[] = allList.toArray(new String[]{});  //指定泛型类型
	System.out.print("指定数组类型:") ;
        for(int i=0;i<str.length;i++){
	    System.out.print(str[i] +  "、") ;
	}
	System.out.print("\n\n返回对象数组:") ;
	Object obj[] = allList.toArray();
        for(int i=0;i<obj.length;i++){
	    String temp = (String) obj[i];
	    System.out.print(temp +  "、") ;
	}
	
					 
     }
 }

程序运行结果 :

     

5、集合的其它操作

      isEmpty()方法判断集合是否为空

      contains()方法判断集合中是否存在指定元素

      subList()方法截取部分集合内容

      indexOf()方法查询指定元素的位置

代码如下 :

import java.util.ArrayList ;
import java.util.List ;
 
 public class ArrayListDemo05{
    public static void main(String[] args){

    List<String> allList = new ArrayList<String>() ;         //定义并实例化List对象,指定String类型
	
    System.out.println("集合操作前是否为空?" + allList.isEmpty()) ;

        allList.add("Hello") ;                        //增加数据
	allList.add("World") ;                        //增加数据
	allList.add("abc");                           //增加数据
	allList.add("jkl");                           //增加数据
	allList.add("uio");
	
	System.out.println(allList.contains("Hello")?"\"Hello\"字符串存在! ":"\"Hello\"字符串不存在! ");

	List<String> allSub = allList.subList(2,4);    //从第二个元素开始截取,到第四个元素之前停止,截取第2,3两个元素
	System.out.print("集合截取:") ;
        for(int i=0;i<allSub.size();i++){
	    System.out.print(allSub.get(i) + "、") ;
	}
	System.out.println("") ;                   //换行
	System.out.println("abc字符串的位置:" + allList.indexOf("abc"));
					 
    }
 }

程序运行结果 :

      

(二) 、LinkedList :

           LinkedList表示一个链表的操作类,此类虽然实现了List接口,但也同时实现了Queue接口,Queue表示是的队列操作接口,采用FIFO(First Input First Output)先进先出的方式操作。

1、在链表的开头和结尾增加数据

代码如下 :

import java.util.LinkedList;
public class LinkedListDemo01{
    public static void main(String[] args){
	LinkedList<String> link = new LinkedList<String>();
        link.add("A");                          //向链表中增加数据
	link.add("B");                          //向链表中增加数据
	link.add("C");                          //向链表中增加数据
	System.out.println("初始化链表 :" + link);     //输出链表内容,调用toString()方法
	link.addFirst("X");                     //在链表的表头增加内容
	link.addLast("Y");                      //在链表的表尾增加内容
        System.out.println("增加头和尾之后的链表 :" + link);   //输出链表内容,调用toString()方法
	} 
} 

程序运行结果 :

    

2、找到链表头

     找到表头:element()

     找到且不删除表头:peek()

     找到并删除表头:poll()

代码如下 :

import java.util.LinkedList;
public class LinkedListDemo02{
	public static void main(String[] args){
	   LinkedList<String> link = new LinkedList<String>();
	   link.add("A");
	   link.add("B");
	   link.add("C");
	   System.out.println("1-1、element()方法找表头:" + link.element());
	   System.out.println("1-2、找完之后的链表内容:" + link);

	   System.out.println("\n2-1、peek()方法找表头:" + link.peek());
	   System.out.println("2-2、找完之后的链表内容:" + link);

	   System.out.println("\n3-1、poll()方法找表头:" + link.poll());
	   System.out.println("3-2、找完之后的链表内容:" + link);

	}
}

程序运行结果 :

     

猜你喜欢

转载自blog.csdn.net/Rachel_pan/article/details/84633315