黑马程序员技术交流社区
标题:
(主推)List和Set集合的总结
[打印本页]
作者:
hou604720966
时间:
2013-5-12 10:52
标题:
(主推)List和Set集合的总结
List:
是有序的集合;按照数据的插入前后顺序存储数据,可以有重复数据,有下标,用户可以通过索引来访问List中的元素,类似于java中数组。因为List关心的是索引,与其他集合相比, List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o)。
<p>/*
* List接口的常用方法:</p><p> * */
public void ListTools(){
//泛型为JDK1.5及以上版本才有的
//List<Object> list = new ArrayList();
List list = new ArrayList();
list.add("姓名");//向list增加元素
list.add(1);
list.add(1.0);
list.add(100L);
list.add('A');
System.out.println("原有集合:" + list);
list.add(5,"性别");//通过索引增加元素
System.out.println("增加后集合:" + list);
list.set(5, "女");//通过索引修改元素
System.out.println("修改后集合:" + list);
System.out.println("获取指定集合索引中的值:" + list.get(0));
list.remove(0);//通过索引移除元素
System.out.println("移除后集合:" + list);
System.out.println("女在list中首次出现的位置:" + list.indexOf("女"));//返回此列表中第一次出现的指定元素的索引 ,如果不包含则返回-1;
System.out.println("姓名在list中首次出现的位置:" + list.indexOf("姓名"));//返回此列表中第一次出现的指定元素的索引 ,如果不包含则返回-1;
list.add("女");
System.out.println("增加后集合:" + list);
System.out.println("女在list中最后出现的位置:" + list.lastIndexOf("女"));//返回此列表中最后出现的指定元素的索引;如果不包含则返回 -1
System.out.println("姓名在list中最后出现的位置:" + list.lastIndexOf("姓名"));//返回此列表中最后出现的指定元素的索引;如果不包含则返回 -1
//获取所有元素
ListIterator listit = list.listIterator();//列表迭代器
while(listit.hasNext()){
System.out.println(listit.next());
}
//子列表
List list_new = list.subList(0,3);//返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图
System.out.println(list_new);
}</p>
复制代码
ArrayList与LinkedList与
Vector的区别
ArrayList:底层数据结构是数组结构,非同步,特点:查询速度快。
LinkedList:底层数据结构是链表,非同步,特点:插入和删除快。
Vector:底层数据结构是数组结构,同步,特点:
Set:
是无序的集合,不能有重复数据存储,无下标,关心唯一性,它不允许重复,是因为Set判断两个对象相同不是使用==运算符,而是根据equals方法。即两个对象用equals方法比较返回。
/*
* Set常用方法
* */
public void SetTools(){
HashSet<String> set = new HashSet();//泛型JDK1.5及以上版本
set.add("姓名");//向set增加元素
set.add("年龄");
set.add("性别");
System.out.println("原有集合:" + set);//通过打印可以看出set集合是无序的
//验证set的唯一性
set.add("姓名");
System.out.println("现有集合:" + set);//通过打印验证了set集合的唯一性
System.out.println(set.contains("姓名"));//是否包含 返回true或false
set.remove("姓名");//删除元素
System.out.println("删除后集合:" + set);
HashSet<String> hs = (HashSet)set.clone();//返回此 HashSet 实例的浅表副本:并没有复制这些元素本身。
System.out.println("hs:" + hs);
//set遍历
for(String str : set){//JDK1.5及以上版本
System.out.print(str + " , ");
}
System.out.println();
Iterator it = set.iterator();//迭代器
while(it.hasNext()){
System.out.print((String)it.next() + " , ");
}
System.out.println();
}
复制代码
Collection与Collections的区别
Collection好比是种植出来的水果,Collections则是对水果进行包装处理
Collection:该类为接口,
Collections:该类为包装类包含有关集合操作的静态方法,
Arrays工具类
该类是数组的各种方法
/*
* Arrays常用方法
* */
public void ArraysTools(){
//返回一个受指定数组支持的固定大小的列表
List list = Arrays.asList("AAA","BBB");
System.out.println(list);
// 使用二分搜索法来搜索指定数组,以获得指定对象。
//该方法是重载方法
System.out.println(Arrays.binarySearch(new String[]{"AA", "BB", "CC"}, "AA"));
//如果没有搜索到返回 (-(插入点) - 1) 该方法为JDK1.6及以上版本
System.out.println(Arrays.binarySearch(new String[]{"AA", "BB", "CC", "DD"}, 1, 2, "AA"));
//复制指定的数组,以使副本具有指定的长度。
//该方法是重载方法
char[] c = Arrays.copyOf(new char[]{'a', 'b', 'c', 'd', 'e'}, 2);
for(char a : c){
System.out.print(a + " - ");
}
System.out.println();
//将指定数组的指定范围复制到一个新数组。
//该方法是重载方法
char[] b = Arrays.copyOfRange(new char[]{'a', 'b', 'c', 'd', 'e'}, 0, 4);
for(char a : b){
System.out.print(a + " - ");
}
System.out.println();
// 如果两个指定的 char 型数组彼此相等,则返回 true。
//该方法是重载方法
System.out.println(Arrays.equals(new char[]{'a', 'b', 'c', 'd', 'e'}, new char[]{'a', 'b', 'c', 'd', 'e'}));
//将指定的 char 值分配给指定 char 型数组的每个元素。
//该方法是重载方法
Arrays.fill(b, 'c');
System.out.println(b);
b = Arrays.copyOfRange(new char[]{'a', 'b', 'c', 'd', 'e'}, 0, 4);
//将指定的 char 值分配给指定 char 型数组指定范围中的每个元素。
Arrays.fill(b, 1, 3, 'c');
System.out.println(b);
//基于指定数组的内容返回哈希码。
//该方法是重载方法
System.out.println(Arrays.hashCode(b));
int[] i = {12, 45, 9, 2, 7, 0};
//对指定的 int 型数组按数字升序进行排序。
//该方法是重载方法
Arrays.sort(i);
for(int a : i){
System.out.print(a + " - ");
}
System.out.println();
//返回指定数组内容的字符串表示形式。 JDK1.5及以上版本
//该方法是重载方法
String str = b.toString();
System.out.println(str);
}
复制代码
作者:
神之梦
时间:
2013-5-12 11:25
楼上的真心快
作者:
蚂蚁搬家
时间:
2013-5-12 20:03
伙计太强了,总是有神贴,不得不佩服!
作者:
曹睿翔
时间:
2013-5-12 20:33
这个在你之前就有张林敏发过帖子,另外呢,这是对应我推出的活动的,你并没有领任务!
你觉得有必要就多注意我发帖的动态。要求,没有就算了
一个辛苦分,不多
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2