Commit 495c9649 by jiewen.li

add Tests

parent 4f9f399e
## 示例
\ No newline at end of file
## 示例
- 集合
对于 List ,关心的是顺序,它保证维护元素特定的顺序(允许有相同元素),使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在 List 中的位置,类似于数组下标)来访问 List 中的元素。
Collection //接口的接口 对象的集合
├ List //按进入先后有序保存 可重复
│ ├ LinkedList //接口实现类 链表 插入删除 没有同步 线程不安全
│ ├ ArrayList //接口实现类 数组 随机访问 没有同步 线程不安全
│ └ Vector //接口实现类 数组 同步 线程安全
│ └ Stack
└ Set // 子接口 仅接收一次,并做内部排序
├ HashSet
│ └ LinkedHashSet
└ TreeSet
- 字典
对于 Map ,最大的特点是键值映射,且为一一映射,键不能重复,值可以,所以是用键来索引值。 方法 put(Object key, Object value) 添加一个“值” ( 想要得东西 ) 和与“值”相关联的“键” (key) ( 使用它来查找 ) 。方法 get(Object key) 返回与给定“键”相关联的“值”。
Map 同样对每个元素保存一份,但这是基于 ” 键 ” 的, Map 也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet 或者 LinkedHashMap.
Map //接口 键值对的集合
├ HashTable //接口实现类 同步线程不安全
├ HashMap //接口实现类 没有同步 线程不安全
│ ├ LinkedHashMap
│ └ WeakHashMap
├ TreeMap
└ IdentifyHashMap
Collection 是对象集合, Collection 有两个子接口 List 和 Set,List 可以通过下标 (1,2..) 来取得值,值可以重复,而 Set 只能通过游标来取值,并且值是不能重复的
ArrayList , Vector , LinkedList 是 List 的实现类
ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的
LinkedList 是线程不安全的,底层是由链表实现的
Map 是键值对集合
HashTable 和 HashMap 是 Map 的实现类
HashTable 是线程安全的,不能存储 null 值
HashMap 不是线程安全的,可以存储 null 值
\ No newline at end of file
package cn.freemud.demo;
import cn.freemud.demo.po.User;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.google.common.primitives.Longs;
import org.junit.Assert;
import org.junit.Test;
import java.util.*;
public class CollectionTests {
@Test
public void TestList(){
//LinkedList
LinkedList<User> userLinkedList = Lists.newLinkedList();
User zs = new User(1L,"张三");
User ls = new User(2L,"李四");
User ww = new User(3L,"王五");
User zl = new User(4L,"郑六");
// LinkedList 可重复
userLinkedList.add(zs);
userLinkedList.add(zs);
userLinkedList.add(ls);
userLinkedList.add(ww);
userLinkedList.add(zl);
Integer i = 0;
for (Iterator<User> iter = userLinkedList.iterator(); iter.hasNext();){
User currentUser = iter.next();
System.out.printf("index:%d,value:%s \r\n",i, JSON.toJSONString(currentUser));
i++;
}
Assert.assertSame(userLinkedList.get(0),userLinkedList.get(1));
// LinkedList 先后有序保存
userLinkedList.removeFirst();
userLinkedList.removeLast();
LinkedList<User> ckUsers = Lists.newLinkedList();
ckUsers.add(zs);
ckUsers.add(ls);
ckUsers.add(ww);
Assert.assertEquals(JSON.toJSONString(userLinkedList),JSON.toJSONString(ckUsers));
ckUsers.add(zl);
Assert.assertNotEquals(JSON.toJSONString(userLinkedList),JSON.toJSONString(ckUsers));
//ArrayList
ArrayList<User> userArrayList = Lists.newArrayList();
userArrayList.add(zs);
User ss = userArrayList.get(0);
Assert.assertSame(zs,ss);
//HashSet
HashSet<Long> userHashSet = Sets.newHashSet();
// HashSet 自动去重,并内部排序
userHashSet.add(1L);
userHashSet.add(2L);
userHashSet.add(1L);
System.out.println(JSON.toJSONString(userHashSet));
Assert.assertEquals(JSON.toJSONString(userHashSet),"[1,2]");
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment