精华内容
下载资源
问答
  • java--数组列表的区别
    千次阅读
    2020-05-22 19:39:06

    Array和ArrayList的区别:
    1. 数组类型的变量在声明的同时必须实例化,而arrayList可以只声明
    2. Array只能存储同构对象,而ArrayList可以存异构对象
    3.Array连续存放,而ArrayList存放不一定连续
    4.Array初始化大小指定,而Arraylist大小可以动态指定 ArrayList默认构造的初始容量是10, 超过10后变化为10-16-25-38 公式(旧容量*3)/2
    5.Array不能随意添加删除其中的项, 而ArrayList可以在随意的位置插入或删除

    List和ArrayList的区别:
    List是接口, ArrayList是list接口的一个实现类, List接口不能被构造

    更多相关内容
  • Java-数组列表(ArrayList)

    千次阅读 2020-05-21 00:11:31
    Java-数组列表(ArrayList) ArrayList类是一个特殊的数组--动态数组。 普通的数组是静态的,只有先确定了他的大小才能给它初始化赋值或者参与运算,而且这个大小一但初始化后是不能被修改的,所以当你刚开始不...

           ArrayList类是一个特殊的数组--动态数组。

           普通的数组是静态的,只有先确定了他的大小才能给它初始化赋值或者参与运算,而且这个大小一但初始化后是不能被修改的,所以当你刚开始不确定你要输入数据的多少时,普通的数组不容易实现(万一你输入的数据多于数组大小时,就会数组溢出,导致报错),为此java有了" 数组列表"(ArrayList)。

    (小声bb:其实我感觉ArrayList,甚至是Java的整个集合类,都有与C++里的STL类似,所以有C++一些基础的同学们学这一部分应该会很轻松)

    优点:

    1、支持自动改变大小
    2、可以灵活的插入删除元素

    缺点:

    比普通的数组的速度慢一些

    目录

    1.如何创建一个ArrayList?(定义一个ArrayList)

    2.如何对数组列表进行插入、删除等操作?(ArrayList的方法)

    3.具体例子分析

    4.*拓展:(多维数组列表contactsList)

     


    1.如何创建一个ArrayList?(定义一个ArrayList)

    在Java中,我们可以通过创建这个简单的语句来创建字符串ArrayList:

    ArrayList <String> aList = new ArrayList <String>();

    在上面的语法中,aList是“String”类型,因此要添加到此列表的元素将是字符串类型。类型决定了哪种类型的元素列表。

    ArrayList <String> aList = new ArrayList <Integer>();

    上面的语法是接受int元素。

    所以,我们可以有:

    ArrayList<参数类型>  变量名字= new ArrayList<参数类型可以没有>;
    

    另:

    1、不初始化容量

    ArrayList aList = new ArrayList(); //不初始化数组容量,当数组容量满时数组会以当前数组容量的2倍扩容

    2、初始化容量

    ArrayList aList = new ArrayList(10);//初始容量为10,相当于数组的最大容量

    3、用一个集合或数组初始化 

    ArrayList aList = new ArrayList(a);        //a为集合或数组

    2.如何对数组列表进行插入、删除等操作?(ArrayList的方法)

    • aList.add(int index, Object obj)      将指定的对象添加到该集合中

               aList.add("apple"); //默认将“apple”插入数组列表的“0”位置            

               aList.add(1, "pear");//将“pear”插入数组列表“1”的位置

    • aList.get(int index)      获得指定索引位置上的元素
    • aList.size()    获取数组列表的长度
    • aList.isEmpty()   判断数组列表是否为空  空为true

          补充:判断该数组列表是否为空,可以用aList.isEmpty()==true?判断,也可以用aList.size()==0? 来判断。

    eg:

    public static void main(String[] args)
    {
       ArrayList<String> aList = new ArrayList<String>();
       aList.add("blue");
       aList.add("black");
       aList.add("red");
       aList.add(1, "yellow");
       aList.add((aList.size() - 1), "green");
       System.out.print(aList);
    }

    该程序的输出为:

    [blue, yellow, black, green, red]
    • aList.remove(int index)   将指定的对象从该数组列表中删除
    • aList.set(int index, Object obj)    将指定索引位置上的元素修改为指定对象

               aList.set(1, "pear"); //将数组列表中“1”位置上的元素替换为“pear”

    在上述程序后添加

    System.out.println( );
    aList.remove(1);
    aList.set(1, "pink");
    for (int i = 0; i < aList.size(); i++)
         System.out.print(aList.get(i) + "\t");
    

    输出:

    [blue, yellow, black, green, red]
    blue    pink    green   red
    • aList.clear( )     清空数组列表
    • 在进行查找时,可以用类似字符串的方法:用 indexOf() , lastIndexOf()

    3.具体例子分析

    题目说明:将1,10,5,4,11,12,9依次放入数组列表,并且按升序维护每个元素。

    分析:明白了数组列表的几种方法,这个程序就很好写了。大体思路就是每次插入都让这个数字插入到比他小的数后边,比他大的数前边。

    话不多说,上代码:

    import javax.swing.JOptionPane;
    import java.util.Scanner;
    import java.util.*;
    
    public class InsertNumberIntoCorrectPositionVersion
    {
      public static ArrayList<Integer> numbers = new ArrayList<Integer>();  	
      public static void main(String [] args)
      {
        insertElement(1);     writeElements();
        insertElement(10);    writeElements();
        insertElement(5);     writeElements();
        insertElement(4);     writeElements();
        insertElement(11);    writeElements();
        insertElement(12);    writeElements();
        insertElement(9);     writeElements();
      } 
      public static void insertElement(Integer valueToInsert)//插入元素方法
      { 
         if (numbers.isEmpty())//如果数组列表为空,直接插入
            numbers.add(0, valueToInsert);
         else if (valueToInsert < numbers.get(0))//如果该数比数组列表最小的数还小       
            numbers.add(0, valueToInsert);//插入到0位置
         else if (numbers.get(numbers.size() - 1) < valueToInsert)//该数比最大的数还大
            numbers.add(numbers.size(), valueToInsert);//插入到末尾
         else	
         {  	  
            int index, current, next;
            boolean locationFound = false;
            for(index = 0; index < numbers.size() - 1 && !locationFound; index++)
            {
               current = numbers.get(index);   
               next = numbers.get(index + 1);
               if (valueToInsert > current && valueToInsert <  next)//找到该数该插入的位置
               {
                 numbers.add(index + 1, valueToInsert);
                 locationFound = true;
               }
            }  
         } 
      } 
      public static void writeElements()//输出数组列表的方法
      {
       for (int index = 0; index < numbers.size(); index++)
         System.out.print(numbers.get(index) + "\t"); 
       System.out.println();
       System.out.println();
      }
    }

    4.*拓展:(多维数组列表contactsList)

    • 模型:

    • 定义:如下
    contactsList = new ArrayList<ArrayList<Type>>();//Type为接受元素的类型,如String,Integer...
    • 申请空间
    public static void createArrayList()
    {
       int numberOfSubLists = 6;  //申请的长度
       contactsList = new ArrayList<ArrayList<String>>();
       for (int i = 0; i < numberOfSubLists; i++)
           contactsList.add(i, new ArrayList<String>());
    }
    //上述多维数组列表contactsList就是申请了6个ArrayList的长度,相当于二维数组的列下标开到了6;
    • 方法:

         与ArrayList的方法一样,唯一不同的是对多维数组列表使用方法时,要精确到每一个一维数组列表。

         方法如下:

    contactsList.get(0).size()//获取多维数组里的第0个ArrayList的长度
    contactsList.get(1).add(0, x)//向多维数组里的第1个ArrayList里的下标0位置插入元素x
    contactsList.get(2).get(3)//获取多维数组里的第2个ArrayList里的下标3的元素
    ......
    ......
    • 最后让我们快乐的读一下代码吧

    题目:您需要开发一个允许用户维护联系人列表的应用程序。一个联系人应该有姓氏和名字,并且至少有以下其中一个:固定 电话号码、移动电话号码、电子邮件地址、邮政地址。

    分析:直接用多维数组列表来存储,然后像上一个代码一样维护每组数据

    (该程序只输入一个联系人,但是程序很完整,完全可以实现输入多组数据)

    import javax.swing.JOptionPane;
    import java.util.Scanner;
    import java.util.*;
    
    public class Task
    {
      public static ArrayList<ArrayList<String>> contactsList;//定义一个多维数组
      public static void main(String [] args)
      {
        createArrayList();//申请空间 
        insertDetails();//插入数据
    	writeContacts();//输出多维数组
      }	
      public static void createArrayList()
      {
        int numberOfSubLists = 6; 
           contactsList = new ArrayList<ArrayList<String>>();
        for (int i = 0; i < numberOfSubLists; i++)
    	   contactsList.add(i, new ArrayList<String>());//申请6个ArrayList的大小
      }
      public static void insertDetails()
      {
        String elementsToInsert[] = new String[6]; 
        elementsToInsert[0] = "Black";
        elementsToInsert[1] = "Jim";
        elementsToInsert[2] = "061-11234";
        elementsToInsert[3] = "085-1234566";
        elementsToInsert[4] = "jim.black@gmail.com";
        elementsToInsert[5] = "123 O'Connell St Limerick";   
        insertEntry(elementsToInsert);
      }
      public static void insertEntry(String [] elementsToInsert)
      {
        int index;
        String current, next;
        boolean locationFound = false;  
    	//如果多维数组列表第0个ArrayList为空,即整个多维数组列表为空
    	//将elementsToInsert数组按下标依次插入多维数组列表第0,1,...,5个ArrayList
        if (contactsList.get(0).size() == 0)                                       
    	   for (int i = 0; i < elementsToInsert.length; i++) 
              contactsList.get(i).add(0, elementsToInsert[i]);
        //如果该人的姓比第一个人的姓字典序还小,直接把该人的信息插入0位置
        else if (elementsToInsert[0].compareToIgnoreCase(contactsList.get(0).get(0)) < 0)
    	  for (int i = 0; i < elementsToInsert.length; i++)  
            contactsList.get(i).add(0, elementsToInsert[i]);    
    	//如果该人的姓比最后一个人的姓字典序还大,直接把该人的信息插入末尾
        else if (((contactsList.get(0).get(contactsList.get(0).size() - 1)).compareToIgnoreCase(elementsToInsert[0])) < 0)
          for (int i = 0; i < elementsToInsert.length; i++)  	    	    
            contactsList.get(i).add(contactsList.get(i).size(), elementsToInsert[i]);
       else	//否则的话要找到一个合适的位置再进行插入(比前一个人的姓字典序大,比后一个的姓字典序小)
       {  	
        for(index = 0; index < contactsList.size() - 1 &&  !locationFound; index++)
        {
          current = contactsList.get(0).get(index);
          next  = contactsList.get(0).get(index + 1);
          if (elementsToInsert[0].compareToIgnoreCase(current) > 0  && elementsToInsert[0].compareToIgnoreCase(next) < 0)
          {
    	    for (int i = 0; i < elementsToInsert.length; i++)  
               contactsList.get(i).add(index + 1, elementsToInsert[i]);
            locationFound = true;
         }
        }
       }
     }  	
       public static void writeContacts()
      {
        int count = 0;  
        for (int index = 0; index < contactsList.get(0).size(); index++)
        {
          System.out.println(contactsList.get(0).get(index)); 
          System.out.println(contactsList.get(1).get(index));  
          System.out.println(contactsList.get(2).get(index));  
          System.out.println(contactsList.get(3).get(index));  
          System.out.println(contactsList.get(4).get(index));  
          System.out.println(contactsList.get(5).get(index));  
        }
      }
    }	

     

    (本人为Java的小白,刚学Java语言没多久,如果有什么错误,还请大家指教)

     

     

    展开全文
  • 主要介绍了java实现列表、集合与数组之间转化的方法,涉及java列表、集合与数组相互转换的技巧,非常具有实用价值,需要的朋友可以参考下
  • 如何在Java中创建数组列表

    千次阅读 2018-12-12 16:51:56
    为了 在Java中存储动态大小的元素 ,我们使用了 ArrayList 。每当添加新元素时,它会自动增加其大小。 ArrayList 实现Java的List接口和Java的Collecti...

    为了 在Java中存储动态大小的元素 ,我们使用了 ArrayList 。每当添加新元素时,它会自动增加其大小。 ArrayList 实现Java的List接口和Java的Collection的一部分。

    由于其功能和灵活性,它被广泛使用。

    ArrayList的关键点

    1. An  ArrayList 是一个可调整大小的数组,也称为动态数组。它根据新元素增加其大小,并在删除元素时减小大小。

    2. 数组用于在 ArrayList   内部存储元素  。它允许您通过索引检索元素。

    3. Java   ArrayList   类允许重复和空值。

    4. Java   ArrayList   类是一个有序的集合。它保持元素的插入顺序。

    5. 在   ArrayList ,你不能创建一个   ArrayList   原始类型,如int,char,boolean等。你必须使用盒装类型,如整数,字符,布尔等。

    ArrayList的层次结构


    java Arrary List的层次结构

    ArrayList  实现   List接口   扩展  Collection  扩展  Iterable。

    如何创建ArrayList

    在Java中,我们可以 ArrayList 通过创建这个简单的语句来创建:

    ArrayList <String> arlist = new ArrayList <String>();

    在上面的语法中,list是“String”类型,因此要添加到此列表的元素将是字符串类型。类型决定了哪种类型的元素列表。

    ArrayList <String> arlist = new ArrayList <Integer>();

    上面的语法,接受int元素。

    如何添加元素?

    要在ArrayList中添加元素,我们可以使用 add( ) 方法。这种方法有变化,使用取决于要求。

    句法

    arlist.add(“JavaTpoint”);

    在特定位置添加元素,我们可以编写如下方法:

    arlist.add(2,“JavaTpoint”);

    例1

    class  ArrayList1 {
    

       public  static  void  main(String  args []){
    

          ArrayList < String >  ArrayList < String >();
    

          arlist。添加(“JAVA”);
    

          arlist。添加(“Csharp”);
    

          arlist。add(“Python”);
    

          arlist。添加(“Php”);
    

          arlist。添加(“Android”);
    

          arlist。添加(“HTML”);
    

          //在第六位添加“C ++”
    

          arlist。add(5,“C ++”);
    

          //显示元素
    

          系统。出。println(arlist);
    

       }
    

    }
    


    输出:

    [JAVA,Csharp,Python,Php,Android,C ++,HTML]

    如何删除元素

    要添加元素 ArrayList ,我们可以使用该 remove( ) 方法。这种方法也有变化。

    class  ArrayList1 {
    

       public  static  void  main(String  args []){
    

          ArrayList < String >  ArrayList < String >();
    

          arlist。添加(“JAVA”);
    

          arlist。添加(“Csharp”);
    

          arlist。add(“Python”);
    

          arlist。添加(“Php”);
    

          arlist。添加(“Android”);
    

          arlist。添加(“HTML”);
    

          //从第六位移除“C ++”
    

          arlist。删除(“C ++”);
    

          //显示元素
    

          系统。出。println(arlist);
    

       }
    

    }
    



    class  ArrayList1 {
    

       public  static  void  main(String  args []){
    

          ArrayList < String >  ArrayList < String >();
    

          arlist。添加(“JAVA”);
    

          arlist。添加(“Csharp”);
    

          arlist。add(“Python”);
    

          arlist。添加(“Php”);
    

          arlist。添加(“Android”);
    

          arlist。添加(“HTML”);
    

          //从第六位移除“C ++”
    

          arlist。删除(“C ++”);
    

          //显示元素
    

          系统。出。println(arlist);
    

       }
    

    }
    


    输出:[JAVA,Csharp,Python,Php,Android,HTML]

    Java ArrayList的方法

    Java ArrayList中有许多方法,但我们在这里解释一些主要方法:

    Int Siz()

    返回列表中的元素。

    Void trimToSize()

    用于将列表当前大小的容量调整为ArrayList实例。

    E set(int index,element)

    用指定的位置替换元素。

    boolean remove(Object o)

    删除详细元素的第一个实例。

    set(int index,Object o)

    它用于更新元素。用对象o替换元素。

    对象get(int index)

    返回列表的对象

    boolean isEmpty()

    如果list为空,则返回true。


    Java ArrayList的构造函数

    数组列表( )

    构建了一个空数组列表。

    ArrayList(Collection <?extends E> c)

    构建了一个使用集合c的元素初始化的数组列表

    ArrayList(int capacity)

    已建立的具有指定初始容量的阵列列表。


    快乐的编码!


    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31557424/viewspace-2285030/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/31557424/viewspace-2285030/

    展开全文
  • Java 数组去重

    千次阅读 2019-05-29 14:07:00
    2019独角兽企业重金招聘Python工程师标准>>> ...

    第一种方法---循环比较

    循环对比每个元素的值是否一致,这个就不过多去介绍,主要是第二种方法

    第二种方法---利用hashSet去重

    hashSet是一个没有重复元素的集合,由hashMap实现的,无序,并且允许null,但只允许一个null值。 下面贴上代码,亲测可用。

    public boolean checkIsRepeat(String[] arrs){
    
    	HashSet<String> hashSet = new HashSet<>();
    	
    	for(int i = 0 ; i < arrs.length; i++){
    		hashSet.add(arrs[i].trim());
    	}
    	
    	if(hashSet.size() == arrs.length){
    		return true;
    	}
    	
    	return false;
    	
    }
    

    转载于:https://my.oschina.net/u/3821242/blog/3055504

    展开全文
  • java数组包含某个值 如何检查Java数组是否包含值? (How to Check if Java Array Contains a Value?) There are many ways to check if a Java array contains a specific value. 有很多方法可以检查Java数组是否...
  • Java数组

    千次阅读 2021-03-09 18:39:43
    Java语言数组遍历教程Java语言数组遍历详解语法for(int i = 0;i< 数组名称.length;i++){数组名称[i];}说明我们在程序中,定义了一个变量 i,用 i 的值和数组的长度值比较,因为数组的索引是从 0 开始的,所以我们...
  • java 数组的合并

    千次阅读 2022-03-23 20:40:40
    Java数组的合并
  • java数组删除数组元素_如何在Java中删除数组元素

    万次阅读 多人点赞 2020-07-20 15:04:52
    java数组删除数组元素When we create an array in Java, we specify its data type and size. This is used by JVM to allocates the necessary memory for array elements. There are no specific methods to ...
  • Java 数组转List的四种方式

    千次阅读 2021-09-04 21:39:56
    Java 数组转List的四种方式 第一种方式(未必最佳):使用ArrayList.asList(strArray) ​ 使用Arrays工具类Arrays.asList(strArray)方式,转换完成后,只能对List数组进行查改,不能增删,增删就会抛出...
  • Java数组排序方法详解

    千次阅读 2021-02-27 11:03:41
    数组,本身是有序的元素序列,本文我们就来看看Java数组排序的几个方法。一、冒泡排序举 个 栗 子:5 2 0 4 1 3 一个容量为七的数组排升序(降序同理,最大值变最小就ok)①从这组数中找那个冒泡的(最大的),把它踢到...
  • java数组如何添加元素向数组里添加一个元素怎么添加,这儿总结有三种方法:1、一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。但有个可以改变大小的数组为ArrayList,即可以定义一个...
  • java数组如何赋值

    千次阅读 2021-02-12 15:16:43
    Java 语言中数组必须先初始化,然后才可以使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值。初始化数组有以下 3 种方式:1)使用 new 指定数组大小后进行初始化使用 new 关键字创建...
  • 字符串转数组使用Java split() 方法split() 方法根据匹配给定的正则表达式来拆分字符串。注意:.、|和*等转义字符,必须得加\\。多个分隔符,可以用|作为连字符。// 字符串转数组 java.lang.StringString str = "0,1...
  • Java数组定义常用方法

    千次阅读 2021-03-07 02:41:41
    Java数组定义常用方法Java中的数组、是一种简单的线性数据存储结构、他用牺牲自动扩展大小来换取与集合相比的唯一优势——查询效率的提升。Java中的数组有什么类型?我们要怎么定义这些数组呢?下面跟yjbys小编一起来...
  • java 数组中插入元素How to add elements to an array in java? We know that java array size is fixed, so we can’t add elements to an Array. We have to provide size of the array when we initialize array ...
  • Java 数组的排序、逆序

    千次阅读 2021-02-12 09:36:06
    数组的排序、逆序测试数据public static void main (String[] args) {// 数组逆序int[] arr = {1,2,3,4,5,6,7};reverse(arr);// 数组选择排序 升序int[] arr1 = {6,5,3,1,7,4,2};selectSort(arr1);// 数组冒泡排序 ...
  • 数组操作Java数组如何反转输出?下面本篇文章就给大家介绍2种在java中实现数组反转的简单方法。有一定的参考价值,希望对大家有所帮助。【视频教程推荐:java教程】方法一:使用循环,交换数组中元素的位置使用循环...
  • Java数组超详解

    千次阅读 多人点赞 2021-09-27 10:47:55
    前面我们学习了随机数的介绍和使用,那么这篇我们来学习java数组的定义和使用, java数组和c语言的十分类似。 二、数组的定义 数组定义的形式: 格式1: 数据类型 [ ] 数组名 ;如int [ ]arr; 说明:...
  • Java数组详解(超全)

    万次阅读 2021-07-24 19:24:51
    @15db9742 因为完整定义了String数组,故分配了空间,arr1指向arr1[0][0]的地址(整个数组的首地址) 两个[[表示里面有二维数组java.lang.String;是包名 例3: float arr1[][] = new float [3][5]; System.out....
  • Java数组(Array)和列表(ArrayList)的区别

    万次阅读 多人点赞 2018-04-11 22:05:34
    转载自:http://blog.csdn.net/chenglansky/article/details/445678871)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”...3)建议:基于效率和类型检验,应尽可能使用Array,无法确定数组大小时...
  • Java 数组切片函数

    千次阅读 2021-05-28 23:15:47
    1. copyOfRange() System.arraycopy(src, srcPos, dest, destPos, length); src表示源数组 srcPos表示源数组中拷贝...import java.util.Arrays; Arrays.copyOfRange(original,int from,int to) original 原始数组 fro
  • java数组如何排序

    千次阅读 2021-02-12 09:53:22
    java中几种数组排序的方法:1、使用Arrays.sort()排序Arrays.sort()排序方法在java中是最简单且最常用的排序方法。int []arr1= {45,34,59,55};Arrays.sort(arr1);//调用方法排序即可Arrays.sort()的使用主要分为对...
  • 认识Java数组-数组也是一种类型

    千次阅读 2021-02-28 15:23:39
    Java语言的组则具有其特有的特征,下面将详细介绍Java语言的数组Java数组要求所有的数组元素具有相同的数据类型。因此,在一个数组中,数组元素的类型是唯一的,即一个数组里只能存储一种数据类型的数据,而不能...
  • JAVA数组的定义

    千次阅读 2021-02-12 13:15:23
    JAVA一维数组一,注意不可添加数组元素不可改变数组长度一个数组中的说有元素必须数据类型相同二,创建方法三种1直接添加元素类型[] 数组名 = {元素,元素,元素,……};int[] arr={1,2,3,4};2先定义数组长度再添加...
  • JAVA数组去重方法

    千次阅读 2020-09-14 19:50:20
    记录JAVA数组去重方法 1利用Set的特性去重复 Set set = new HasSet(); for (int x=0 ; x<arr.length ; x++){ set.add(arr[x]); } 最后set里面的值就是arr数组去重后的所有元素,但是set中数据是无序的,...
  • java数组遍历删除

    千次阅读 2020-11-26 21:33:58
    List数组遍历删除 环境 jdk8 junit 单元测试 正解 // 正解1, jdk自带的addAll方法 @Test public void test18() { String[] strs = {"12","34","56","78","90"}; List<String> list = Arrays.asList...
  • Java 数组转List的几种方法

    千次阅读 2021-06-11 16:02:06
    Java 数组转List的几种方法一、Arrays.asList二、Collections.addAll三、Arrays.stream(arr).collect(Collectors.toList()) 本文提供了几种Java中常用的数组转List的方法 一、Arrays.asList // Array 转 List String...
  • java数组插入元素的三种方法

    千次阅读 2021-02-28 08:48:46
    在使用java数组的时候,因为事先设置不当的一些情况,数组中的元素数量不够。有些人想要再次添加元素,不过数组长度已经设置过就不方便再变动。其实我们还是能够找到一些加入元素,小编在找寻了资料后,为大家梳理了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,802,622
精华内容 721,048
关键字:

java数组列表

java 订阅