Java基础第十五讲:集合(一)
如果您发现本文排版有问题,可以先点击下面的链接切换至老版进行查看!!!
Java基础第十五讲:集合(一)
- collection 集合,用来表示任何一种数据结构
- Collection 集合接口,指的是 java.util.Collection接口,是 Set、List 和 Queue 接口的超类接口
- Collections 集合工具类,指的是 java.util.Collections 类。
上图中加粗线的ArrayList 和 HashMap 是我们重点讲解的对象。下面这张图看起来层级结构更清晰些。
我们这里说的集合指的是小写的collection,集合有4种基本形式,其中前三种的父接口是Collection。
- List 关注事物的索引列表
- Set 关注事物的唯一性
- Queue 关注事物被处理时的顺序
- Map 关注事物的映射和键值的唯一性
| add(E e) | 将指定对象添加到集合中 |
| remove(Object o) | 将指定的对象从集合中移除,移除成功返回true,不成功返回false |
| contains(Object o) | 查看该集合中是否包含指定的对象,包含返回true,不包含返回flase |
| size() | 返回集合中存放的对象的个数。返回值为int |
| clear() | 移除该集合中的所有对象,清空该集合。 |
| iterator() | 返回一个包含所有对象的iterator对象,用来循环遍历 |
| toArray() | 返回一个包含所有对象的数组,类型是Object |
| toArray(T[] t) | 返回一个包含所有对象的指定类型的数组 |
01 |
import java.util.ArrayList; |
02 |
import java.util.Collection; |
03 |
04 |
public class CollectionTest { |
05 |
06 |
public static void main(String[] args) { |
07 |
08 |
String a = "a",b="b",c="c"; |
09 |
Collection list = new ArrayList(); |
10 |
list.add(a); |
11 |
list.add(b); |
12 |
list.add(c); |
13 |
14 |
String[] array = list.toArray(new String[1]); |
15 |
16 |
for(String s : array){ |
17 |
System.out.println(s); |
18 |
} |
19 |
} |
20 |
} |
二、几个比较重要的接口和类简介
1、List接口
List 关心的是索引,与其他集合相比,List特有的就是和索引相关的一些方法:get(int index) 、 add(int index,Object o) 、 indexOf(Object o) 。
ArrayList 可以将它理解成一个可增长的数组,它提供快速迭代和快速随机访问的能力。
LinkedList 中的元素之间是双链接的,当需要快速插入和删除时LinkedList成为List中的不二选择。
Vector 是ArrayList的线程安全版本,性能比ArrayList要低,现在已经很少使用
2、Set接口
Set关心唯一性,它不允许重复。
HashSet 当不希望集合中有重复值,并且不关心元素之间的顺序时可以使用此类。
LinkedHashset 当不希望集合中有重复值,并且希望按照元素的插入顺序进行迭代遍历时可采用此类。
TreeSet 当不希望集合中有重复值,并且希望按照元素的自然顺序进行排序时可以采用此类。(自然顺序意思是某种和插入顺序无关,而是和元素本身的内容和特质有关的排序方式,譬如“abc”排在“abd”前面。)
3、Queue接口
Queue用于保存将要执行的任务列表。
LinkedList 同样实现了Queue接口,可以实现先进先出的队列。
PriorityQueue 用来创建自然排序的优先级队列。番外篇中有个例子,你可以看一下。
4、Map接口
Map关心的是唯一的标识符。他将唯一的键映射到某个元素。当然键和值都是对象。
HashMap 当需要键值对表示,又不关心顺序时可采用HashMap。
Hashtable 注意Hashtable中的t是小写的,它是HashMap的线程安全版本,现在已经很少使用。
LinkedHashMap 当需要键值对,并且关心插入顺序时可采用它。
TreeMap 当需要键值对,并关心元素的自然排序时可采用它。
三、ArrayList的使用
ArrayList是一个可变长的数组实现,读取效率很高,是最常用的集合类型。
1、ArrayList的创建
在Java5版本之前我们使用:
1 |
List list = new ArrayList(); |
1 |
List<String> list = new ArrayList<String>(); |
01 |
List<String> list = new ArrayList<String>(); |
02 |
list.add("nihao!"); |
03 |
list.add("hi!"); |
04 |
list.add("konikiwa!"); |
05 |
list.add("hola"); |
06 |
list.add("Bonjour"); |
07 |
System.out.println(list.size()); |
08 |
System.out.println(list.contains(21)); |
09 |
System.out.println(list.remove("hi!")); |
10 |
System.out.println(list.size()); |
1 |
List<Integer> list = new ArrayList<Integer>(); |
2 |
list.add(new Integer(42)); |
3 |
list.add(43); |
01 |
import java.util.ArrayList; |
02 |
import java.util.Collections; |
03 |
import java.util.List; |
04 |
05 |
public class Test { |
06 |
07 |
public static void main(String[] args) { |
08 |
List<String> list = new ArrayList<String>(); |
09 |
list.add("nihao!"); |
10 |
list.add("hi!"); |
11 |
list.add("konikiwa!"); |
12 |
list.add("hola"); |
13 |
list.add("Bonjour"); |
14 |
15 |
System.out.println("排序前:"+ list); |
16 |
17 |
Collections.sort(list); |
18 |
19 |
System.out.println("排序后:"+ list); |
20 |
} |
21 |
22 |
} |
01 |
import java.util.ArrayList; |
02 |
import java.util.Collections; |
03 |
import java.util.List; |
04 |
05 |
public class Test { |
06 |
07 |
public static void main(String[] args) { |
08 |
09 |
String[] sa = {"one","two","three","four"}; |
10 |
List list = Arrays.asList(sa); |
11 |
System.out.println("list:"+list); |
12 |
System.out.println("list.size()="+list.size()); |
13 |
} |
14 |
15 |
} |
01 |
import java.util.Arrays; |
02 |
import java.util.Iterator; |
03 |
import java.util.List; |
04 |
05 |
public class Test { |
06 |
07 |
public static void main(String[] args) { |
08 |
09 |
// Arrays类为我们提供了一种list的便捷创建方式 |
10 |
List<String> list = Arrays.asList("one", "two", "three", "four"); |
11 |
12 |
// 转换成Iterator实例 |
13 |
Iterator<String> it = list.iterator(); |
14 |
15 |
//遍历 |
16 |
while (it.hasNext()) { |
17 |
System.out.println(it.next()); |
18 |
} |
19 |
20 |
} |
21 |
22 |
} |
01 |
import java.util.Arrays; |
02 |
import java.util.Iterator; |
03 |
import java.util.List; |
04 |
05 |
public class Test { |
06 |
07 |
public static void main(String[] args) { |
08 |
09 |
// Arrays类为我们提供了一种list的便捷创建方式 |
10 |
List<String> list = Arrays.asList("one", "two", "three", "four"); |
11 |
12 |
for (String s : list) { |
13 |
System.out.println(s); |
14 |
} |
15 |
16 |
} |
17 |
18 |
} |
- 分类:
- Java
更新时间:
上一篇:Java基础第十四讲:字符串下一篇:Java基础第十六讲:集合(二)
相关文章
Java基础第十六讲:集合(二)
本讲内容:Map HashMap 前面课程中我们知道Map是个接口,它关心的是映射关系,它里面的元素是成对出现的,键和值都是对象且键必须保持唯一。这一点上看它和Collection是很不相同的。 阅读更多…
