containskey的功能(java:java中Map类有什么作用,具体怎么用呢_alonglee)

:暂无数据 2026-05-09 09:40:02 0
在了解containskey的功能的过程中,您是否也曾对java:java中Map类有什么作用,具体怎么用呢_alonglee感到困惑?别担心,接下来我将结合常见场景,带您一步步理清其中的关键点。

本文目录

java:java中Map类有什么作用,具体怎么用呢_alonglee

*****--Map的内部类,描述Map中的按键/数值对。
SortedMap---扩展Map,使按键保持升序排列
下面以HashMap为例。
public static void main(String args){HashMap hashmap = new HashMap();
*****("Item0", "Value0");
*****("Item1", "Value1");
*****("Item2", "Value2");
*****("Item3", "Value3");
Set set = *****();
Iterator iterator = *****();
while (*****(){***** mapentry = (*****) *****();
*****(*****() + "/" + *****());}}注意,这里Map的按键必须是唯一的,比如说不能有两个按键都为null。
如果用过它,就会知道它的用处了。资料:***** 中的集合类包含 Java 中某些最常用的类。 最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 ***** 中外,两者并没有直接的联系。本文将着重介绍核心 Java 发行套件中附带的 Map,同时还将介绍如何采用或实现更适用于您应用程序特定数据的专用 Map。 Java 核心类中有很多预定义的 Map 类。 在介绍具体实现之前,我们先介绍一下 Map 接口本身,以便了解所有实现的共同点。 Map 接口定义了四种类型的方法,每个 Map 都包含这些方法。 下面,我们从两个普通的方法(表 1)开始对这些方法加以介绍。 put(Object key, Object value)将指定值与指定键相关联
尽管您可能注意到,纵然假设忽略构建一个需要传递给 putAll() 的 Map 的开销,使用 putAll() 通常也并不比使用大量的 put() 调用更有效率,但 putAll() 的存在一点也不稀奇。 这是因为,putAll() 除了迭代 put() 所执行的将每个键值对添加到 Map 的算法以外,还需要迭代所传递的 Map 的元素。 但应注意,putAll() 在添加所有元素之前可以正确调整 Map 的大小,因此如果您未亲自调整 Map 的大小(我们将对此进行简单介绍),则 putAll() 可能比预期的更有效。 迭代Map 中的元素不存在直接了当的方法。 如果要查询某个 Map 以了解其哪些元素满足特定查询,或如果要迭代其所有元素(无论原因如何),则您首先需要获取该 Map 的“视图”。 有三种可能的视图(参见表 3) 前两个视图均返回 Set 对象,第三个视图返回 Collection 对象。 就这两种情况而言,问题到这里并没有结束,这是因为您无法直接迭代 Collection 对象或 Set 对象。要进行迭代,您必须获得一个 Iterator 对象。 因此,要迭代 Map 的元素,必须进行比较烦琐的编码 Iterator keyValuePairs = *****().iterator();Iterator keys = *****().iterator();Iterator values = *****().iterator();
值得注意的是,这些对象(Set、Collection 和 Iterator)实际上是基础 Map 的视图,而不是包含所有元素的副本。 这使它们的使用效率很高。 另一方面,Collection 或 Set 对象的 toArray() 方法却创建包含 Map 所有元素的数组对象,因此除了确实需要使用数组中元素的情形外,其效率并不高。 我运行了一个小测试(随附文件中的 Test1),该测试使用了 HashMap,并使用以下两种方法对迭代 Map 元素的开销进行了比较: int mapsize = *****();Iterator keyValuePairs1 = *****().iterator();for (int i = 0; i 《 mapsize; i++){ ***** entry = (*****) *****(); Object key = *****(); Object value = *****(); ...}Object; Object key = *****(); Profilers in Oracle JDeveloperOracle JDeveloper 包含一个嵌入的监测器,它测量内存和执行时间,使您能够快速识别代码中的瓶颈。 我曾使用 Jdeveloper 的执行监测器监测 HashMap 的 containsKey() 和 containsValue() 方法,并很快发现 containsKey() 方法的速度比 containsValue() 方法慢很多(实际上要慢几个数量级!)。 (参见图 1 和图 2,以及随附文件中的 Test2 类)。 Object value = *****(); ...}
此测试使用了两种测量方法: 一种是测量迭代元素的时间,另一种测量使用 toArray 调用创建数组的其他开销。 第一种方法(忽略创建数组所需的时间)表明,使用已从 toArray 调用中创建的数组迭代元素的速度要比使用 Iterator 的速度大约快 30%-60%。 但如果将使用 toArray 方法创建数组的开销包含在内,则使用 Iterator 实际上要快 10%-20%。 因此,如果由于某种原因要创建一个集合元素的数组而非迭代这些元素,则应使用该数组迭代元素。 但如果您不需要此中间数组,则不要创建它,而是使用 Iterator 迭代元素。 表3: 返回视图的 Map 方法: 使用这些方法返回的对象,您可以遍历 Map 的元素,还可以删除 Map 中的元素。 entrySet()返回 Map 中所包含映射的 Set 视图。 Set 中的每个元素都是一个 ***** 对象,可以使用 getKey() 和 getValue() 方法(还有一个 setValue() 方法)访问后者的键元素和值元素keySet()返回 Map 中所包含键的 Set 视图。 删除 Set 中的元素还将删除 Map 中相应的映射(键和值)values()返回 map 中所包含值的 Collection 视图。 删除 Collection 中的元素还将删除 Map 中相应的映射(键和值)
表4 中列出了 Map 访问方法。Map 通常适合按键(而非按值)进行访问。 Map 定义中没有规定这肯定是真的,但通常您可以期望这是真的。 例如,您可以期望 containsKey() 方法与 get() 方法一样快。 另一方面,containsValue() 方法很可能需要扫描 Map 中的值,因此它的速度可能比较慢。 containsKey(Object key)如果 Map 包含指定键的映射,则返回 truecontainsValue(Object value)如果此 Map 将一个或多个键映射到指定值,则返回 true
对使用 containsKey() 和 containsValue() 遍历 HashMap 中所有元素所需时间的测试表明,containsValue() 所需的时间要长很多。 实际上要长几个数量级! (参见图 1 和图 2,以及随附文件中的 Test2)。 因此,如果 containsValue() 是应用程序中的性能问题,它将很快显现出来,并可以通过监测您的应用程序轻松地将其识别。 这种情况下,我相信您能够想出一个有效的替换方法来实现 containsValue() 提供的等效功能。 但如果想不出办法,则一个可行的解决方案是再创建一个 Map,并将第一个 Map 的所有值作为键。 这样,第一个 Map 上的 containsValue() 将成为第二个 Map 上更有效的 containsKey()。 网友评论:2
HashMap和Hashtable的区别2007-04-05 12:07HashMap是Java ***引进的Map接口的一个实现 Hashtable的方法是同步的,而HashMap的方法不是。 这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同 步。一个方便的方法就是利用Collecti***类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个 封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比 如在一个单线程的应用程序中),而且同步增加了很多处理费用。

呵呵,不好意思哦,就是一般的管理系统

import *****;
import *****;
import *****;
import *****;
import *****;
import *****;
import *****;
import *****;
import *****;
import *****;
import *****;
import *****;
import ********;
import *****;
import *****;
import *****;
/* TODO 学生成绩管理系统
* 通过学号查找,修改,删除数据
*/
public class LittleProgram
{
static boolean isDelete = true;
static boolean isFind = true;
public static void main(String args)//主方法,程序从这里开始运行
throws IOException,NumberNotFoundException
{
int choice=-1;
do{
LittleProgram lp = new LittleProgram();
*****();
*****("\t####################################");
*****();
*****("\t\t Java学生成绩管理系统***");
*****("\t\t请用学号查找,修改,删除数据");
*****();
*****("\t####################################\n");
*****("1.增加数据:\n"+
"2.查找数据:\n"+
"3.删除数据:\n"+
"4.清除所有数据:\n"+
"5.把数据全部打印到屏幕\n"+
"6.把成绩按学号排序\n"+
"7.修改数据\n"+
"8.统计已记录成绩学生数\n"+
"9.关于作者\n"+
"0.退出程序.\n" +
"输入:");
BufferedReader in = //从终
new BufferedReader( //端接
new InputStreamReader(*****));//收数
String inputLine = *****(); //字选
choice= *****(inputLine).intValue();//项;
switch(choice)
{
case 1: {//1.增加数据
String str = *****();
*****(str);
*****("增加数据成功.");
timeOut(1);
}break;
case 2: {//2.查找数据
long find = 0;
*****("请输入你要查找的学生学号:");
BufferedReader inn =
new BufferedReader(
new InputStreamReader(*****));
String inputLi = *****();
find = *****(inputLi).longValue();
*****(find);
timeOut(2);
}break;
case 3: {//3.删除数据
long deleteNumber = 0;
*****("请输入你想删除的同学的学号:");
BufferedReader bf =
new BufferedReader (
new InputStreamReader(*****));
String inputL = *****();
deleteNumber = *****(inputL).longValue();
*****(deleteNumber);
if(isDelete)
*****("删除数据成功!");
timeOut(1);
}break;
case 4: {
*****();//4.清除所有数据
timeOut(1);
}break;
case 5: {
print();//5.把数据全部打印到屏幕
timeOut(2);
}break;
case 6: {
*****();//6.把成绩按学号排序
*****("按照学号从小到大排序成功!\n"+
"排序后:\n");
print();
timeOut(2);
}break;
case 7: {
*****();//7.修改数据
timeOut(2);
}break;
case 8: {
int count = *****();
*****("共有"+count+"个学生已经记录.");
timeOut(2);
}break;
case 9: {
*****("\t\t让炜\n"+
"\t\t上海电力学院通信工程系\n"+
"\t\tQQ:254482170\n");
timeOut(4);
}break;
}while (choice != 0);
*****("Bye! ^-^");
*****(0);
}
public String inputData()//从终端接收数据的方法,返回字符串
throws IOException,NumberFormatException
{
*****("请依次输入 :学号 姓名 性别 成绩\n" +
"每项数据请用空格隔开:");
String all = "";
try{
BufferedReader in = //从终
new BufferedReader ( //端接
new InputStreamReader(*****)); //收数
String inputLine = *****(); //据
StringTokenizer str =
new StringTokenizer(inputLine," ");//接收的数据用空格隔开,这个类用来提取每个字符串
long num = *****(*****()).longValue();//学号
String name = (String)*****(); //姓名
String *** = (String)*****(); //性别
double mark = *****(*****()).doubleValue();//分数
all = *****(num) +" , "+
name +" , "+
*** +" , "+
*****(mark);//把所有的数据用" , "隔开然后在连起来放进字符串all
}catch (IOException e){}
catch (NumberFormatException e){}
return all;//返回字符串all
}
public void addData(String str)//增加数据的方法
throws IOException
{
String s1 ="",s2="" ,s3= "";
File file = new File("*****");
if (*****())//如果文件*****存在
{
try{
BufferedReader in =
new BufferedReader(
new FileReader("*****"));
while ((s1=*****())!=null)
s2+=s1+"\n";//把文件中的每行数据全部放进一个字符串s2
s2+=str+"\n"; //再把s2于形参str相连放进s2
BufferedReader in2 = //把字符
new BufferedReader( //串s2也
new StringReader(s2)); //就是原
PrintWriter out = //文件+
new PrintWriter( //形参str(新输入的一行数据)
new BufferedWriter( //重新写进*****
new FileWriter("*****"))); //覆盖原来的数据
while ((s3=*****())!= null)
{
*****(s3);
}
*****();
//*****("write data true.");
}catch (IOException e){}
}else{
*****("File \"data\" Missing!");
}
}
public void clearData()//清除*****的所有数据的方法
throws IOException
{
File file = new File("*****");
if(*****())//如果文件在
{
try{
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new FileWriter(file)));
*****("");//在文件*****里写进一个空字符,所以清除了原来的内容
*****(); //关闭文件
*****("clear data true!");
}catch(IOException e){}
}else{
*****("File \"data\" Missing!");
}
}
public void deleteData(long deleteNumber)//删除某条数据
throws IOException,FileNotFoundException
{
isDelete = true;
try{
DataMap mp = new DataMap();//生成一个自己编写的容器
long j=0;
String s1="",s2="",s3="";
BufferedReader in =
new BufferedReader(
new FileReader("*****"));
while ((s1=*****())!=null)
{
j=numberTokenizer(s1);
*****(j,s1);
}
try{
if(*****( *****(deleteNumber).toString()))
{
*****(deleteNumber);
}else
throw new NumberNotFoundException();
Collection c = *****();
Iterator iter = *****();
while(*****())
{
s1 = (String)*****();
s3 +=s1+"\n";
}
BufferedReader in2 =
new BufferedReader(
new StringReader(s3));
PrintWriter out =
new PrintWriter(
new BufferedWriter(
new FileWriter("*****")));
//*****("delete No"+deleteNumber);
while( (s1 = *****())!=null)
{
*****(s1);
}
*****();
}catch (NumberNotFoundException e)
{
isDelete = false;
*****(deleteNumber+" no found :(");
}
}catch(IOException e){}
}
public long numberTokenizer(String s)
throws IOException
{
StringTokenizer st =
new StringTokenizer(s," ");
return *****((*****())).longValue();
}
public void findData(long find)//查找数据
throws IOException,NumberNotFoundException
{
isFind = true;
String s = "",findString ="";
long i;
DataMap dm = new DataMap();
BufferedReader in =
new BufferedReader(
new FileReader("*****"));
while ((s=*****())!=null)
{
i=numberTokenizer(s);
*****(i,s);
}
//*****();
try{
if(*****( *****(find).toString()))
{
findString = *****(find);
*****("学号"+find+"学生的资料是:");
*****(findString);
}else
throw new NumberNotFoundException();
}catch (NumberNotFoundException e){
*****(find+" no found :(");
isFind = false;
}
}
public static void print()//读取文本文件把数据打印到终端的方法
throws IOException
{
try{
BufferedReader in =
new BufferedReader(
new FileReader("*****"));
String read = "";
while ((read = *****())!=null)
*****(read);
}catch(IOException e){}
}
public static void timeOut(double sec)//停顿短暂时间的一个方法完全可以不要这个功能
{
double seconds = sec;
long t = *****()+(int)(seconds*1000);
while ((*****())《t)
;
}
public void numSort()//按学号排序
throws IOException
{
long i = 0;
String s = "";
try{
DataArrayList dal = new DataArrayList();
BufferedReader in =
new BufferedReader(
new FileReader("*****"));
while ((s=*****())!=null)
{
i=numberTokenizer(s);
*****(i);
}
Collecti***.sort(dal);
DataMap dm = new DataMap();
BufferedReader in2 =
new BufferedReader(
new FileReader("*****"));
while ((s=*****())!=null)
{
i=numberTokenizer(s);
*****(i,s);
}
PrintWriter out =
new PrintWriter (
new BufferedWriter(
new FileWriter("*****")));
Iterator it = *****();
long temp = 0;
String tempStr = "";
while (*****())
{
temp = *****((String)*****()).longValue();
tempStr = *****(temp);
*****(tempStr);
}
*****();
}catch(IOException e){}
}
public void rewrite()
throws IOException,NumberNotFoundException
{
try{
*****("请输入你要修改的学生学号:");
BufferedReader in =
new BufferedReader (
new InputStreamReader(*****));
String inputLine = *****();
long num = *****(inputLine).longValue();
findData(num);
if(isFind)
{
deleteData(num);
*****("请重新输入该学生的资料:");
String str = inputData();
addData(str);
*****("rewrite true!");
}
}catch(IOException e){}
catch(NumberNotFoundException e){}
}
public int count()
throws IOException
{
DataArrayList dal = new DataArrayList();
try{
String s = "";
long i =0;
BufferedReader in =
new BufferedReader(
new FileReader("*****"));
while ((s=*****())!=null)
{
i=numberTokenizer(s);
*****(i);
}
}catch(IOException e){}
return *****();
}
}
/*
*
* @author RangWei
* TODO 这是个我们写的一个容器,继承公共类HashMap
* 大概的功能就相当一个数组
*
*/
class DataMap extends HashMap//一个存储数据的Map
{
public void put(long i,String str)//把学号和数据放进这个Map
{ //以后一个学号(key)对应的是一个人的数据(value)
put(*****(i).toString(),str);
}
public void remove(long i)//接收学号,然后删除学号(key)和它对应的数据(value)
{
remove(*****(i).toString().toString());
}
public String get(long i)//接收一个学号,然后返回这个key对应的value
{
String s = *****(i).toString();
if (!containsKey(s))
{
*****("Not found Key: "+s);
}
return (String)get(s);
}
}
/*
*
* @author RangWei
*
* TODO 这个类继承ArrayList
* 用来按数字排序,在用学号排序时要用到它
*
*/
class DataArrayList extends ArrayList
{
public void add(long num)
{
String numToString = *****(num).toString();
add(numToString);
}
}
/*
*
* @author RangWei
*
* TODO 增加的一个Exception,主要是在文件里没有要找
* 的学号就抛出
*
*/
class NumberNotFoundException extends Exception
{
public NumberNotFoundException()
{}
}
原原本本的宿舍管理源码没有,你把上面这个学生成绩管理系统做个修改,就是你自己的宿舍管理系统了。如果连这个都不想改,那你就太懒了。

java高手进来啊

写你这个程序很简单,不过就是要花一定的时间,最近很忙要不就帮你写,你如果有兴趣的话,我这里有一个做好了的,不过功能可能比你的要求高一定,*****

问几个java函数的功能,和一个排序问题

1,actionPerformed是ActionListener接收到事件后调用的方法
2,containsKey是Map这种有Key和Value的集合判断是否包含Key值时用到的方法.
3,把一个文本框内的学生信息按学号排序?
所有的学生信息都在文本框内么?格式是怎样的?这都不好整呢.
String temp = *****();
String rows = *****("\r");//得到所有的行
Map map = new TreeMap();
for(int i=0;i《*****;i++){
*****("\t");//假定文本用tab键分隔,第一个为学号
*****(row);
}
Set keySet = *****();
for(Iterator it=*****();*****();){
String key = (String)*****();
*****(*****(key));
}

getarguments().containskey()作用

getarguments()的意思是取得的参数,也就是其他地方传来的值,containskey() 在Java中的意思是是否存在括号里的内容这个意思吧,连起来你懂的,我也是刚刚开始学Android

java装饰模式和继承的区别

  java装饰模式和继承的区别如下:

  装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以扩展。

Map常用功能

A:映射功能:

   V put(K key, V value) :以键=值的方式存入Map集合

B:获取功能:

     V get(Object key):根据键获取值

int size():返回Map中键值对的个数

C:判断功能:

    boolean containsKey(Object key):判断Map集合中是否包含键为key的键值对

    boolean containsValue(Object value):判断Map集合中是否包含值为value键值对

 boolean isEmpty():判断Map集合中是否没有任何键值对 

D:删除功能:

  void clear():清空Map集合中所有的键值对

  V remove(Object key):根据键值删除Map中键值对

E:遍历功能:

  Set》 entrySet():将每个键值对封装到一个个Entry对象中,再把所有Entry的对象封装到Set集合中返回

  Set keySet() :将Map中所有的键装到Set集合中返回

  Collection values():返回集合中所有的value的值的集合

这篇文章的目的是成为你理解containskey的功能的可靠指南,尤其是扫清java:java中Map类有什么作用,具体怎么用呢_alonglee的障碍。如果它做到了,请收藏以备不时之需。你的支持是我们创作的最大动力!
本文编辑:admin

更多文章:


matlab的具体含义是什么(“matlab”程序的具体含义是什么)

matlab的具体含义是什么(“matlab”程序的具体含义是什么)

本文旨在为您说清楚两件事:一是matlab的具体含义是什么到底是什么,二是如何理解“matlab”程序的具体含义是什么。内容不长,但都是干货,希望能对您有所帮助。

2026年5月9日 12:40

特效制作为什么需要大量资金(为什么大家都说电影里的特效很烧钱)

特效制作为什么需要大量资金(为什么大家都说电影里的特效很烧钱)

从一个常见的误区说起:很多人学特效制作为什么需要大量资金,却忽略了为什么大家都说电影里的特效很烧钱。结果事倍功半。希望你不会再犯这个错误。

2026年5月9日 12:20

web简单网页设计(网页设计怎么制作怎么能够设计出简单易用的网页)

web简单网页设计(网页设计怎么制作怎么能够设计出简单易用的网页)

相信点开这篇文章的你,一定对web简单网页设计抱有好奇。没关系,下面我们就结合网页设计怎么制作怎么能够设计出简单易用的网页,带你一步步揭开它的面纱。

2026年5月9日 12:00

饿了吗代言人(饿了么下午茶广告女代言人是谁)

饿了吗代言人(饿了么下午茶广告女代言人是谁)

“饿了吗代言人”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看饿了吗代言人(饿了么下午茶广告女代言人是谁)!

2026年5月9日 11:40

多次使用strcpy函数(C语言填空题,要求函数strcpy2()实现字符串两次复制,我实在不知道怎么办,谁能帮帮忙,感激不尽)

多次使用strcpy函数(C语言填空题,要求函数strcpy2()实现字符串两次复制,我实在不知道怎么办,谁能帮帮忙,感激不尽)

上一篇文章我们介绍了多次使用strcpy函数的基础,今天我们将深入其核心环节——C语言填空题,要求函数strcpy2()实现字符串两次复制,我实在不知道怎么办,谁能帮帮忙,感激不尽,看看它如何承前启后。

2026年5月9日 11:20

mybatis plus是什么(mybatis plus该不该用)

mybatis plus是什么(mybatis plus该不该用)

就像学骑车需要掌握平衡一样,理解mybatis plus是什么的窍门,恰恰在于把握好mybatis plus该不该用这个“平衡点”。

2026年5月9日 11:00

应用程序菜单在哪里找(win10 系统开始菜单所有程序在哪)

应用程序菜单在哪里找(win10 系统开始菜单所有程序在哪)

面对应用程序菜单在哪里找这个议题,很多人在win10 系统开始菜单所有程序在哪这里栽了跟头。今天,我们就来聊聊如何避免这个坑,轻松上手。

2026年5月9日 10:40

霹雳布袋戏玄蒙纪(霹雳玄蒙纪怎么才出一集)

霹雳布袋戏玄蒙纪(霹雳玄蒙纪怎么才出一集)

朋友们,对霹雳布袋戏玄蒙纪感到陌生再正常不过了。本篇内容将化身您的指南针,帮您在霹雳玄蒙纪怎么才出一集的迷雾中找到方向。

2026年5月9日 10:20

横向导航代码(如何用DIV+CSS做漂亮的横排导航栏)

横向导航代码(如何用DIV+CSS做漂亮的横排导航栏)

有没有觉得横向导航代码听起来很高深?别怕,今天我们就把它和如何用DIV+CSS做漂亮的横排导航栏一起,拆解成易懂的小知识点。

2026年5月9日 10:00

containskey的功能(java:java中Map类有什么作用,具体怎么用呢_alonglee)

containskey的功能(java:java中Map类有什么作用,具体怎么用呢_alonglee)

在了解containskey的功能的过程中,您是否也曾对java:java中Map类有什么作用,具体怎么用呢_alonglee感到困惑?别担心,接下来我将结合常见场景,带您一步步理清其中的关键点。

2026年5月9日 09:40

最近更新

mybatis plus是什么(mybatis plus该不该用)
2026-05-09 11:00:02 浏览:0
containskey的功能(java:java中Map类有什么作用,具体怎么用呢_alonglee)
2026-05-09 09:40:02 浏览:0
热门文章

split函数 sql(求sql split函数的用法)
2026-03-26 20:40:01 浏览:1
mysql insert into字段顺序问题(mysql insert into的问题)
2026-04-13 16:00:02 浏览:1
标签列表