/**
* List接口,Set接口,Map接口学习总结
*
* 1.List(有序的,允许重复的):(三个常用的实现类) → ArrayList(不同步) 、 LinkedList(不同步) 、 Vector(同步)
*
* ①ArrayList:
* <1>.实现了所有的可选列表操作,并允许包括null在内的 所有元素;
* 此类大致上等同于Vector类,除了此类不是同步的;
*
* <2>.此类调用add()方法为数组添加元素,可以是任何类型的 元素。
* eg. ArrayList list = new ArrayList();
* list.add("aaa");
* list.add(123);
* list.add(new String[]{"aa","bb"});
* list.add(true);
*
* <3>.常用的方法有:
* get(index) → 具体查找某个元素;
* size() → 查看其包括几个元素;
* clear() → 清空所有元素;
* contains("aa") → 是否包括某个元素;
* indexOf() → 返回首次出现的索引;无时返回-1;
* isEmpty() → 有没有元素;
* remove(index) → 删除某元素;
* lastIndexOf() → 最后一次出现某元素的索引;
*
* <4>.★迭代
* //迭代方法一:
* for(int i=0; i
* System.out.println(list.get(i));
* }
*
* //迭代方法二:
* for(Object obj : list) {
* System.out.println(obj);
* }
*
* //迭代方法三:
* //说明:迭代器默认指的位置是第一个元素的上方;
* //hasNext()方法:如果仍有元素可迭代,则返回true
* //next()方法: 返回迭代的下一个元素
*
* Iterator iter = list.iterator();
* while(iter.hasNext()) {
* System.out.println(iter.next());
* }
*
*
* 2.Set接口:
*
* <1>.他的父接口为:Collection,Iterable; (无序的,不能重 复的),最多包含一个null元素;
*
* <2>.其常用是实现类为:HashSet
* eg. HashSet set = new HashSet();
*
* set.add("kk");
* set.clear();
* set.contains("kk");
* set.remove("kk"); → ☆ 只能根据对象remove;没有根 据索引的remove;
* set.size();
*
* <3>.★迭代 (说明:因为set集合中无get()方法,所以只有2 种迭代方法)
*
* //迭代方法一:
* for(Object obj : set) {
* String str = (String)obj;//因为set集合中添加的都是 字符串,所以要进行强制类型转换;
* System.out.println(str);
* }
*
* //迭代方法二:
* Iterator iter = new Iterator();
* while(iter.hasNext()) {
* String str = (String)iter.next();
* System.out.println(str);
* }
*
* 3.Map接口:与Collection无关;
* <1>.它的实现类为键值对;
* 将键映射到值的对象。一个映射不能包含重复的键;每个 键最多只能映射一个值,值是可以重复的。
*
* <2>.常用的实现类为:HashMap(不同步),HashTable(同步)
*
* <3>.HashMap与HashTable的区别★
*
* ①HashTable是基于陈旧的dictionary类;HashMap是 Java1.2引进的Map接口的一个实现类。
* ②HashTable是线程安全的,也就是同步的;HashMap是线 程不安全的,不同步的;
*
* <4>.常用的方法:
* ①put() : 将指定的值与此映射进行关联。
* ②get() : 返回指定键所映射的值;如果此映射不包含该键的 映射关系,则返回null;
*
* eg: HashMap map = new HashMap();
* map.put(1,"value1");
* map.put(2,"value2");
* map.put(3,"value3");
*
* <5>.★迭代:
* //迭代方法一:
* //说明1:keySet()方法返回映射中包含的键的set视图
* Set keys = map.keySet();
* for(Object key : keys) {
* System.out.println(key + "→" + map.get(key));
* }
*
* //迭代方法二:
* //说明:entrySet()方法返回此映射中包含的映射关系的Set 视图;
* //Entry(=java.util.Map.Entry)保存的是一对映射关系,通 过getKey()方法可以获得键,通过getValue()可以获得值。
* Set set = map.entrySet();
* for(Object obj : set) {
* Entry en = (Entry)obj;
* System.out.println(en.getKey() + "→" + en.getValue());
* }
*
*
*/
//************************泛型集合的迭代 **********************************
/**
* 1.ArrayList
*/
ArrayList
//迭代方法一:
for(int i=0; i
String str = list.get(i);
System.out.println(str);
}
//迭代方法二:
for(String str : list) {
System.out.println(str);
}
//迭代方法三:
Iterator
while(iter.hasNext()) {
String str = iter.next();
System.out.println(str);
}
/**
* 2.HashSet
*/
HashSet
//迭代方法一:
for(String str : set) {
System.out.println(str);
}
//迭代方法二:
Iterator
while(iter.hasNext()) {
String str = ite.next();
System.out.println(str);
}
/**
* 3.HashMap
*/
HashMap
Set
for (Entry
System.out.println(en.getKey() + "→" + en.getValue());
List集合的分割:
package com.book.admin.test; import java.util.ArrayList; import java.util.List; import com.google.common.collect.Lists; public class TestList { public static void main(String[] args) { Listlist = new ArrayList (); list.add(1L); list.add(2L); list.add(3L); list.add(4L); list.add(5L); list.add(6L); list.add(7L); list.add(8L); list.add(9L); test(list,3); //每组显示3个 test(list, 6); //每组显示6个 test(list, 16);//每组显示16个 } private static void test(List list,int size) { List > subSets = Lists.partition(list, size); System.out.println(" >>>>>>> " + subSets.toString()); } }
结果:
>>>>>>> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>>>>>> [[1, 2, 3, 4, 5, 6], [7, 8, 9]]
>>>>>>> [[1, 2, 3, 4, 5, 6, 7, 8, 9]]
原理:http://zhangshixi.iteye.com/blog/672697
http://blog.csdn.net/vking_wang/article/details/14166593
http://zhangshixi.iteye.com/blog/674856
http://zhangshixi.iteye.com/blog/673143