在java.util包中提供了一些集合类,主要有List、Set、Map,其中List和Set继承了Collection接口。这些集合类也称为容器,它们与数组有些类似,但是数组的长度是固定的,集合的长度是可变的,数组用来存放基本类型的数据,集合用来存放对象的引用。
我们主要讲List接口,Set接口和Map接口。
List接口继承Collection接口,List接口允许存放重复的对象,排序方式也是对象插入时的顺序。
Set接口继承Collection接口,Set接口不允许存放重复的对象,排序方式按照自身内部的排序规则。
Map接口是以key-value的方式存放对象,其中key不可重复,value可以重复,排序方式按照自身内部的排序规则。
一、List的主要用法
1、ArrayList的用法
向集合中加入元素
import java.util.ArrayList;
public class CollectionDemo {
public static void main(String[] args) {
//创建一个ArrayList
ArrayList<String> list = new ArrayList<String>();
//将对应的字符串加入list
list.add("老大");
list.add("老二");
list.add("老三");
list.add("老四");
for(String str:list){
System.out.println("这是第"+list.indexOf(str)+"个:"+str);
}
}
}
打印结果如下:
结论:add()方法将元素放入list中,打印的顺序也是元素加入的顺序,该集合类与数组一样,是从0开始计数的。
import java.util.ArrayList;
public class CollectionDemo {
public static void main(String[] args) {
//创建ArrayList
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> allList = new ArrayList<String>();
//将对应的字符串加入list
list.add("老大");
list.add("老二");
list.add("老三");
list.add("老四");
allList.add("老爸");
//addAll()方法,将list中的所有元素加入allList中
allList.addAll(list);
for(String str:allList){
System.out.println(str);
}
}
}
打印结果:
结论:list中有老大,老二,老三,老四,一共四个元素,allList使用addAll()方法,直接将list中的元素加入到allList中。
从集合中删除元素
import java.util.ArrayList;
public class CollectionDemo {
public static void main(String[] args) {
//创建ArrayList
ArrayList<String> list = new ArrayList<String>();
//将对应的字符串加入list
list.add("老大");
list.add("老二");
list.add("老三");
list.add("老四");
list.remove(0);
for(String str:list){
System.out.println(str);
}
}
}
打印结果如下:
结论:remove(int)方法将指定位置的元素删除。
import java.util.ArrayList;
public class CollectionDemo {
public static void main(String[] args) {
//创建ArrayList
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> allList = new ArrayList<String>();
//将对应的字符串加入list
allList.add("老三");
allList.add("老四");
allList.add("老五");
allList.add("老六");
list.add("老大");
list.add("老二");
list.add("老三");
list.add("老四");
allList.removeAll(list);
for(String str:allList){
System.out.println(str);
}
}
}
打印结果如图所示:
结论:removeAll()方法会从指定的集合中一处包含在另一个集合中的元素,返回值为boolean类型,如果有移除的对象则返回true,否则返回false。
import java.util.ArrayList;
public class CollectionDemo {
public static void main(String[] args) {
//创建ArrayList
ArrayList<String> list = new ArrayList<String>();
//将对应的字符串加入list
list.add("老大");
list.add("老二");
list.add("老三");
list.add("老四");
//list.toArray()方法返回值类型为Object[]
Object[] strs = list.toArray();
for(Object str:strs){
System.out.println(str);
}
}
}
结果如图:
结论:toArray()方法返回值类型为Object[]
2、HashSet的用法
Set的方法使用与List类似,但是Set排序是按照自身内部排序规则排序的,我们来看一下
import java.util.HashSet;
public class CollectionDemo {
public static void main(String[] args) {
//创建ArrayList
HashSet<String> set = new HashSet<String>();
//将对应的字符串加入list
set.add("老大");
set.add("老二");
set.add("老三");
set.add("老四");
//list.toArray()方法返回值类型为Object[]
for(Object str:set){
System.out.println(str);
}
}
}
这里我们使用了和List一样的顺序加入元素,但是打印结果如下:
这里我们可以看出,打印结果的顺序与我们加入元素的顺序是不同的,这是由于Set使用了自身内部的排序规则。
Map集合
HashMap的用法
Map接口中提供了集合常用的方法,如isEmpty()、size()等,该集合使用put()方法添加元素。
首先我们看一下Map是如何加入和取出值得
import java.util.HashMap;
public class MapDemo {
public static void main(String[] args) {
//创建HashMap
HashMap<String,String> map = new HashMap<String,String>();
//将对应的字符串加入map
map.put("1","老大");
map.put("2","老大");
map.put("3","老大");
map.put("4","老大");
//取出对应的值
System.out.println(map.get("1"));
}
}
打印结果为老大,说明map取值是对应key值去取的。