JAVA类集框架笔记(一)

2023-09-24 11 0

一、基本概念 :

        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);}
}

程序运行结果 :

     

代码编程
赞赏

相关文章

n的阶乘【清华大学】
求最大最小数【清华大学】
全自动档案蓝光光盘检测刻录系统案例
质因数的个数【清华大学】
信刻国产电子档案蓝光光盘刻录存储备份归档管理应用
最大公约数【哈尔滨工业大学】