javahashtable-50

问题描述:java中hashtable怎样存储数据和读取数据 这篇文章主要介绍了一个有趣的事情,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。

java中的Hashtable怎么用,请详细举例子说明,拜托了 谢谢

javahashtable-50的相关图片

Hashtable-哈希表类\x0d\x0a\x0d\x0a以哈希表的形式存储数据,数据的形式是键值对.\x0d\x0a特点:\x0d\x0a查找速度快,遍历相对慢\x0d\x0a键值不能有空指针和重复数据\x0d\x0a\x0d\x0a创建\x0d\x0aHashtable ht=new \x0d\x0aHashtable();\x0d\x0a\x0d\x0a添值\x0d\x0a\x0d\x0aht.put(1,"Andy");\x0d\x0aht.put(2,"Bill");\x0d\x0aht.put(3,"Cindy");\x0d\x0aht.put(4,"Dell");\x0d\x0aht.put(5,"Felex");\x0d\x0aht.put(6,"Edinburg");\x0d\x0aht.put(7,"Green");\x0d\x0a\x0d\x0a取值\x0d\x0a\x0d\x0aString str=ht.get(1);\x0d\x0aSystem.out.println(str);// Andy\x0d\x0a\x0d\x0a对键进行遍历\x0d\x0a\x0d\x0aIterator it = ht.keySet().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a Integer key = (Integer)it.next();\x0d\x0a \x0d\x0aSystem.out.println(key);\x0d\x0a}\x0d\x0a\x0d\x0a对值进行遍历\x0d\x0a\x0d\x0aIterator it = ht.values().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a String value =(String) it.next();\x0d\x0a \x0d\x0aSystem.out.println(value);\x0d\x0a}\x0d\x0a\x0d\x0a取Hashtable记录数\x0d\x0a\x0d\x0aHashtable ht=new Hashtable();\x0d\x0a\x0d\x0aht.put(1,"Andy");\x0d\x0aht.put(2,"Bill");\x0d\x0aht.put(3,"Cindy");\x0d\x0aht.put(4,"Dell");\x0d\x0aht.put(5,"Felex");\x0d\x0aht.put(6,"Edinburg");\x0d\x0aht.put(7,"Green");\x0d\x0a\x0d\x0aint i=ht.size();// 7\x0d\x0a\x0d\x0a删除元素\x0d\x0a\x0d\x0aHashtable ht=new Hashtable();\x0d\x0a\x0d\x0aht.put(1,"Andy");\x0d\x0aht.put(2,"Bill");\x0d\x0aht.put(3,"Cindy");\x0d\x0aht.put(4,"Dell");\x0d\x0aht.put(5,"Felex");\x0d\x0aht.put(6,"Edinburg");\x0d\x0aht.put(7,"Green");\x0d\x0a\x0d\x0aht.remove(1);\x0d\x0aht.remove(2);\x0d\x0aht.remove(3);\x0d\x0aht.remove(4);\x0d\x0a\x0d\x0aSystem.out.println(ht.size());// 3\x0d\x0a\x0d\x0aIterator it = ht.values().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a // Get value\x0d\x0a String value =(String) \x0d\x0ait.next();\x0d\x0a System.out.println(value);\x0d\x0a}。

java中Hashtable和HashMap的区别分析的相关图片

java中Hashtable和HashMap的区别分析

就是哈希表,下面这个示例创建了一个数字的哈希表。它将数字的名称用作键: Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();  

 numbers.put("one", 1);  

 numbers.put("two", 2);  

 numbers.put("three", 3); 。

要获取一个数字,可以使用以下代码:

Integer n = numbers.get("two");  

 if (n != null) {  

 System.out.println("two = " + n);  

 }

java 多线程操作hashtable(添加,删除,遍历)的相关图片

java 多线程操作hashtable(添加,删除,遍历)

1 HashMap不是线程安全的。

hastmap是一个接口 是map接口的子接口,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。

2 HashTable是线程安全的一个Collection。

HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。

HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。

Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。

最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。

public static void main(String args[])。

HashTable h=new HashTable();。

h.put("用户1",new Integer(90));。

h.put("用户2",new Integer(50));。

h.put("用户3",new Integer(60));。

h.put("用户4",new Integer(70));。

h.put("用户5",new Integer(80));。

Enumeration e=h.elements();。

while(e.hasMoreElements()){。

System.out.println(e.nextElement());。

java.util.hashtable实现了哪个interface的相关图片

java.util.hashtable实现了哪个interface

public class TestThread {。

public static void main(String[] args){。

Map<Integer, Object> tables = new Hashtable<Integer, Object>();。

Thread add = new Thread(new ThreadAdd(tables));。

Thread del = new Thread(new ThreadDel(tables));。

Thread count = new Thread(new ThreadCount(tables));。

//启动线程

add.start();

del.start();

count.start();。

}

/**

*添加对象线程

*/

private static class ThreadAdd implements Runnable{。

private Map<Integer, Object> table;。

public ThreadAdd(Map<Integer, Object> tables){。

this.table=tables;。

}

public void run() {。

// TODO Auto-generated method stub。

for(int i=0;i<10;i++){。

table.put(i, new Object());。

System.out.println("添加对象,序号为:"+i);。

}

}

}

/**

*删除对象线程

*/

private static class ThreadDel implements Runnable{。

private Map<Integer, Object> table;。

public ThreadDel(Map<Integer, Object> table){。

this.table=table;。

}

public void run() {。

// TODO Auto-generated method stub。

for(int i=0;i<10;i++){。

try {

Thread.sleep(100);。

} catch (InterruptedException e) {。

// TODO Auto-generated catch block。

e.printStackTrace();。

}

table.remove(i);。

System.out.println("移除对象,序号为:"+i);。

}

}

}

/**

*统计线程

*/

private static class ThreadCount implements Runnable{。

private Map<Integer, Object> table;。

public ThreadCount(Map<Integer, Object> table){。

this.table=table;。

}

public void run() {。

// TODO Auto-generated method stub。

for(int i=0;i<10;i++){。

try {

Thread.sleep(50);。

} catch (InterruptedException e) {。

// TODO Auto-generated catch block。

e.printStackTrace();。

}

System.out.println("当前队列还剩"+table.size()+"个对象");。

}

}

}

这是我的写的demo,不知道符合不符合你的意思,大家共同交流共同进步。

Java中的Hashtable如何根据值获取键?

一、Map

map接口,集合类的接口,声明了map的常用方法。所有的map都继承自改接口。

二、java.io.Serializable接口,

接口里没有声明任何方法,该接口用来实现对象的序列化反序列化功能。

三、java.lang.Cloneable。

接口里没有声明任何方法,该接口实现对象复制功能。

四. AbstractMap

重要的类:AbstractMap<K,V>。

AbstractMap抽象类实现了一些简单且通用的方法,

在这个抽象类中有两个方法非常值得关注,keySet和values方法源码的实现可以说是教科书式的典范。

抽象类通常作为一种骨架实现,为各自子类实现公共的方法。

Java中Map类型的数据结构有相当多,AbstractMap作为它们的骨架实现实现了Map接口部分方法,也就是说为它的子类各种Map提供了公共的方法,没有实现的方法各种Map可能有所不同。

抽象类不能通过new关键字直接创建抽象类的实例,但它可以有构造方法。AbstractMap提供了一个protected修饰的无参构造方法,意味着只有它的子类才能访问(当然它本身就是一个抽象类,其他类也不能直接对其实例化),也就是说只有它的子类才能调用这个无参的构造方法。

在Map接口中其内部定义了一个Entry接口,这个接口是Map映射的内部实现用于维护一个key-value键值对,key-value存储在这个Map.Entry中。AbstractMap对这个内部接口进行了实现,一共有两个:一个是可变的SimpleEntry和一个是不可变的SimpleImmutableEntry。

1. SimpleEntry

1.1 定义

实现了Map.Entry<K, V>接口,并且实现了Serializable(可被序列化)。它的方法比较简单都是取值存值的操作,对于key值的定义是一个final修饰意味着是一个不可变的引用。

1.2 setValue

ll另外其setValue方法稍微特殊,存入value值返回的并不是存入的值,而是返回的以前的旧值。

源码:

1.3 equals和hashCode。

需要重点学习的是它重写的equals和hashCode方法。

eq方法

 要想正确重写equals方法并能正确使用,通常还需要重写hashCode方法。因为集合中的元素,判断是否一样时,先hash再equals,这也是个知识点,详细的,学习一下原理。

hashcode源码:可以看成求hashcode值时,即返回的int数据,是key.hashCode() ^ value.hashCode(),即key、value的hashcode值异或。

2. SimpleImmutableEntry。

2.1 定义

源码:

它相比于SimpleEntry其key和value成员变量都被定义为了final类型。即定义为不可变的Entry,不提供setValue方法,不能通过setValue方法进行修改。

2.2 setValue

调用setValue方法将会抛出UnsupportedOperationException异常。即定义为不可变的Entry,不提供setValue方法,不能通过setValue方法进行修改。

它的equals和hashCode方法和SimpleEntry一致。

3. 实现的Map接口方法

接下来查看AbstractMap抽象类实现了哪些Map接口中的方法。

3.1 public int size()。

Map中定义了一个entrySet方法,返回的是Map.Entry的Set集合,直接调用Set集合的size方法即是Map的大小。

3.2 public boolean isEmpty()。

调用size方法,等于0即为空。

3.3 public boolean containsValue(Object value)。

这个方法的实现较为简单,通过调用entrySet方法获取Set集合的迭代器遍历Map.Entry,获取对应的value与参数value比较。Map可以存储为null的value值,由于value=null在Map中存储比较特殊(不能计算hashCode值),所以在这里也做了判断参数value是否为空。

public boolean containsKey(Object key)。

这个方法实现和containsValue一致。

3.4 public V get(Object key)。

这个方法实现和containsValue类似,不同的是上面相等返回boolean,这个方法返回value值。

3.5 public V put(K key, V value)。

向Map中存入key-value键值对的方法并没有具体实现,会直接抛出一个UnsupportedOperationException异常。

6 public V remove(Object key)。

通过参数key删除Map中指定的key-value键值对。这个方法也很简单,也是通过迭代器遍历Map.Entry的Set集合,找到对应key值,通过调用 Iterator.remove() 方法删除Map.Entry。

7. public void putAll(Map<? extends K, ? extends V> m)。

这个方法也很简单遍历传入的Map,调用put方法存入就可以了。

public void clear()。

调用entrySet方法获取Set集合再调用Set#clear()方法清空。

keyset

 返回Map key值的Set集合。AbstractMap中定义了一个成员变量“transient Set<K> keySet”,在JDK7中keySet变量是由volatile修饰的,但在JDK8中并没有使用volatile修饰。在对keySet变量的注释中解释道,访问这些字段的方法本身就没有同步,加上volatile也不能保证线程安全。关于keySet方法的实现就有点意思了。

首先思考该方法是返回key值的Set集合,很自然的能想到一个简单的实现方式,遍历Entry数组取出key值放到Set集合中,类似下面代码:

这就意味着每次调用keySet方法都会遍历Entry数组,数据量大时效率会大大降低。不得不说JDK源码是写得非常好,它并没有采取遍历的方式。如果不遍历Entry,那又如何知道此时Map新增了一个key-value键值对呢?

答案就是在keySet方法内部重新实现了一个新的自定义Set集合,在这个自定义Set集合中又重写了iterator方法,这里是关键,iterator方法返回Iterator接口,而在这里又重新实现了Iterator迭代器,通过调用entrySet方法再调用它的iterator方法。下面结合代码来分析:

五、 Dictionary

Dictionary 类是一个抽象类,用来存储键/值对,作用和Map类相似。

给出键和值,你就可以将值存储在Dictionary对象中。一旦该值被存储,就可以通过它的键来获取它。所以和Map一样, Dictionary 也可以作为一个键/值对列表。Dictionary类已经过时了。在实际开发中,你可以实现Map接口来获取键/值的存储功能。

打开CSDN,阅读体验更佳

HashMap、TreeMap、Hashable和LinkedHashMap_kgduu的博客。

HashMap、TreeMap、Hashable和LinkedHashMap Map是最重要的数据结构之一。开始会告诉怎么用HashMap、TreeMap、Hashtable和LinkedHashMap 1、Map概述 在Java SE中有4种Map的实现:HashMap、TreeMap、Hashtable和LinkedHashMap. HashMap:用哈...。

继续访问

Python 接口:从协议到抽象基类_weixin_30492047的博客。

首先,基本的事实是,Python语言没有 interface 关键字,而且除了抽象基类,每个类都有接口:类实现或继承的公开属性(方法或数据属性),包括特殊方法,如__getitem__ 或 __add__。 按照定义,受保护的属性和私有属性不在接口中:即便“受保护...。

继续访问

最新发布 Java集合(九)HashMap接口。

HashMap小结:(1)Map接口的常用实现类:HashMap、Hashtable和Properties(2)HashMap是Map接口使用频率最高的实现类(3)HashMap是以key-val对的方式来存储数据(HashMap$Node类型)(4)key不能重复,但是值可以重复,允许使用null键和null值(5)如果添加相同的key,则会覆盖原来的key-val,等同于修改.(key不会替换,val会替换)我们来把断点放在map.put("no1","张三丰“);

继续访问

Hashtable和HashMap的异同。

Hashtable和HashMap两者的原理相同,功能相同,很多情况下可以互用。 Hashtable和HashMap的主要区别如下: 1、Hashtable继承自Dictionary类,而HashMap实现了Map接口 2、Hashtable线程安全,HashMap重速度、轻安全,是线程非安全的,所以当运行到线程环境中时,需要程序员自己管理线程的同步问题。 3、Hashtable不允许null值(key和value都不允许),HashMap允许null值(key和value都允许) 其他异同点可参照博客:

继续访问

Hashable / Hasher_weixin_33909059的博客。

哈希函数的选择应该作为实现细节,而不是设计中的固定部分;因此,使用者不应该依赖于编译器自动生成的 Hashable 函数的具体特征。最可能的实现是在每个成员的哈希值上调用标准库中的_mixInt函数,然后将他们逻辑异或(^),如同目前Collection类...。

继续访问

php的数据结构_PHP 的数据结构扩展_myh991235的博客。

Sequence 是类数组数据结构的基础接口,定义了很多重要且方便的方法,比如 contains, map, filter, reduce, find, first, last 等。从图中可知,Vector, Deque, Stack, Queue 都直接或者间接的实现了这个接口。 Hashable 在图中看起来比...。

继续访问

33.Java之Map接口实现类(HashMap、HashTable、Properties、TreeSet 和 TreeMap基本介绍,HashMap 底层机制)

Map 接口的常用实现类:HashMap、Hashtable 和 Properties 33.1 HashMap 基本介绍 是 Map 接口使用频率最高的实现类 是以 Key-value 的方式来存储数据(HashMap$Node类型) Key 不能重复,但是值可以重复,允许使用 Null 键和 Null 值 如果添加相同的 Key,则会覆盖原来的 Key-value,等同于修改(Key不会替换,value会替换) 与 HashSet 一样,不保证映射的顺序(即添加顺序与输出顺序不一样),因为底层是以。

继续访问

Map接口:HashMap与HashTable的区别。

1)HashMap和Hashtable都实现了Map接口,但是继承的父类不同: public class Hashtable extends Dictionary implements Map public class HashMap extends AbstractMap implements Map2)HashMap是非synchronized,执行速度快,而HashTab...。

继续访问

php7 唯一数字_PHP7中高效的数据结构_王雷Neo的博客。

实现Hashable接口的数据结构是Map和Set。 Map 一个Map 是一个键值对的连续集合,和数组几乎一致。键可以是任何类型,但是必须唯一。 强项: 性能和内存效率和数组几乎一致 当长度降低的时候自动释放内存 ...。

继续访问

java常见笔试_Java 常见笔试题(2)_weixin_39998462的博客。

java.util.Hashtable实现了哪个接口? A. java.util.Map B. java.util.List C. java.util.Hashable D. java.util.Collection 9. 1. class A implements Runnable{ 2. int i; 3.。

继续访问

实现原理_HashTable实现原理。

概要前一章,我们学习了HashMap。这一章,我们对Hashtable进行学习。我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Hashtable。第1部分 Hashtable介绍第2部分 Hashtable数据结构第3部分 Hashtable源码解析(基于JDK1.6.0_45)第4部分 Hashtable遍历方式第5部分 Hashtable示例转载请注明出处...。

继续访问

Hashtable源码分析

前言:Hashtable线程安全的集合类,虽然它线程安全,然而在日常开发中使用的频率很低,毕竟锁的颗粒度太大了。但是这并不妨碍我们对其内部原理进行了解。 注:本文jdk源码版本为jdk1.8.0_172。 1.Hashtable基本概念 Hashtable与HashMap一样,都是以键值对的形式存储数据。但是Hashtable的键值不能为null,而HashMap的键值是可以为...。

继续访问

Swift自定义Class实现Hashable_weixin_30273763的博客。

增加代码后,发现编译器依然报错"Type 'Bit' does not conform to protocol 'Equatable'"-没有实现Equatable协议。 2.实现Equatable Commend+click点击Hashable定义,进入后再点击Equatable协议定义,可以看到如下定义: ...。

继续访问

Array,Vertor,Arraylist,Hashable,Hashmap等几个易混淆的概念_tjjhz...。

1.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现 2.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的。

继续访问

Hashtable简述

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。......。

继续访问

Map接口与实现类HashTable。

Map接口与实现类HashTable 源码位置 rt.jar/java.util包下 源码类 public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable 特点 1、集合中key不能重复,若put时集合已含有此key,那新值会替换旧值;key,value不能为null 2、HashTable/Map中存放数。

继续访问

Java面试知识整理_加温的啤酒的博客_java面试知识整理。

都实现了list接口,都是有序的 vector线程是安全的,arraylist线程是不安全的 vector数据增长是原来的一倍,arraylist是数据增长是原来的0.5倍 hashmap和hashable的区别 hashmap是hashable的轻量级实现,hashmap允许空键值,hashable不允许 ...。

继续访问

javase基础知识总结_id_1314520的博客。

interface接口: 默认所有方法都是抽象的,并且public修饰的. 属性: 默认为public修饰的常量(public final修饰的) abstract抽象类: 类名被abstract修饰的类; 里面可以有抽象方法, 也可以没有抽象方法; 实现接口类,可以重写也可以不重写接口...。

继续访问

集合—Map接口实现类-Hashtable。

本次博客带领大家学习集合中的Map接口实现类-Hashtable。

继续访问

Hashtable 和 HashMap。

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 1.HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。 2...。

继续访问

hashMap和hashTable的区别以及HashMap的底层原理?

hashMap和hashTable的区别? 1、继承的父类不同 HashTable继承Dictionary类,而hashMap继承了AbstractMap类,但是二者都实现了map接口。 2、线程安全性不同 Hashtable 线程安全,因为它每个方法中都加入了Synchronize。HashMap是线程不安全的。​ HashMap底层是一个Entry数组,当发生hash冲突的时候,ha......。

继续访问

java---Map接口的实现类HashMap和Hashtable。

package LyfPractice;import java.util.*;/** * Created by fangjiejie on 2016/12/19. */ /*Hashmap和Hashtable的区别 1.相同:都实现了Map接口,实现了key和value的保存与映射,有很多相同的方法 2.不同: Hashmap:是map接口的实现类 ,非同步,线程不安全 ,速度快,可以有。

继续访问

Map 接口实现类-Hashtable。

Map 接口实现类-Hashtable。

继续访问

29. Map接口继承关系 / Map接口概述 / HashMap底层实现原理及相关知识 / Map常用方法 / TreeMap、Properties。

Map接口继承关系 Map接口概述 Map与Collection并列存在。用于保存具有映射关系的数据:key-value Map 中的 key 和 value 都可以是任何引用类型的数据 Map 中的 key 用Set来存放, 不允许重复,即同一个 Map 对象所对应 的类,须重写hashCode()和equals()方法 常用String类作为Map的“键” key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到 唯一的、确定的 value Map接口的常用实现类: HashM。

继续访问

Map接口的实现类----HashMap。

Map接口的实现类----HashMap。

继续访问

JAVA基础 接口与继承 HashMap使用。

https://blog.csdn.net/u010575093/article/details/50731281 抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量 接口不可继承抽象类,抽象类可实现多个接口。接口与接口之间是继承,用extends,可继承多个接口 mport java.util.HashMap; import java.util.Map; interface T...。

继续访问

【Java_基础深入】LinkedHashMap 继承 HashMap又实现 Map 接口背后的设计思想。

JDK源码的类定义 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable public class LinkedHashMap<K,V> extends HashMap<K,V> implements...。

继续访问

Map接口及其实现类HashMap、LinkedHashMap和Hashtable的简单介绍。

一、Map集合的特点 Map集合是一个双列集合,一个元素包含两个值(一个是key,一个是value)Map集合的特点 Map集合中的元素,key和value的数据类型可以相同也可以不同 Map集合中的元素,key是不允许重复的,value是可以重复的 Map集合中的元素,key和value是一一对应的 Map的常用方法 1、public V put (K key, V value)方法 作用:把指定的键与指定的值添加到Map集合中 返回值V的含义:存储键值对的时候,key如果不重复,返回值v是null;

继续访问

Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例。

转 http://www.cnblogs.com/skywang12345/p/3310887.html#top Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例 概要 前一章,我们学习了HashMap。这一章,我们对Hashtable进行学习。 我们先对Hashtable有个整体认识,然后再学习它的源码,最后再通过实例来学会使用Has。

继续访问

HashTable实现原理

有两个类都提供了一个多种用途的hashTable机制,他们都可以将可以key和value结合起来构成键值对通过put(key,value)方法保存起来,然后通过get(key)方法获取相对应的value值。一个是前面提到的HashMap,还有一个就是马上要讲解的HashTable。对于HashTable而言,它在很大程度上和HashMap的实现差不多,如果我们对HashMap比较了解的话,对Has。

原文地址:http://www.qianchusai.com/javahashtable-50.html

omens,omen设置开机密码

omens,omen设置开机密码

新思意-70,新思意服务有限公司可靠吗

新思意-70,新思意服务有限公司可靠吗

passwordcheck-60

passwordcheck-60

territory-50

territory-50

livestream-40

livestream-40

lw/上班族卡通头像,上班族卡通图片女

lw/上班族卡通头像,上班族卡通图片女

garibaldi-20

garibaldi-20

暗音未来-60,暗音未来(暗初音)

暗音未来-60,暗音未来(暗初音)

众缘所成,众缘所生法,是即无自性

众缘所成,众缘所生法,是即无自性

jsonArray,jsonarray转为jsonobject

jsonArray,jsonarray转为jsonobject