java集合及分类
主要分为Collection和Map,Collection获取保存的对象引用使用的是索引,我们可以把它们看成是类似数组的类,而Map则是以键值对的方式存储对象,每个对象在Map中存储时都会有一个键值与之对应。Collection是集合类的顶级接口,其直接继承的接口有Set和list。而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。
Map:一堆键值对数据,要求每个键值对中的键不能重复
Map类型容器是通过键值对的方式来保存对象的,有时我们也称之为字典,创建一个Map类型的容器可以使用任何一个实现了Map接口的类。
Map map = new HashMap();
想要向Map中添加数据可以使用put方法,它接受两个参数:键和值。
map.put("key",10);
如果想要获取Map中某个键对应的值可以使用get方法。
map.get("key");
HashMap
常用操作
增加:put()
删除:remove() clear()
修改:put()
检索:get()
获取元素键集:keySet()
获取元素值集:values()
迭代
foreah
iterator
判断键是否存在:containsKey()
判断值是否存在:containsValue()
List:一堆有序可重复的数据,可以使用下标进行检索
list集合与数组的用途非常类似,都是用来存储大量数据的,不同处有两点:
1、数组长度在使用前必须确定,一旦确定不能改变。而list集合长度可变,无需定义。
2、数组中必须存放同一类型的数据,list集合集合中可以存放不同类型的数据。
1 public class ListArray{ 2 public static void main(String[] args) { 3 System.out.println("请输入学员姓名,并以over作为结束"); 4 Scanner scanner = new Scanner(System.in); 5 ArrayList list = new ArrayList(); 6 do{ 7 String name = scanner.next(); 8 if(name.equalsIgnoreCase("over"))break; 9 list.add(name); 10 }while(true); 11 System.out.println(list); 12 } 13 }
List集合中存放引用类型可以用强制类型转换获取。
JDK 1.5前
list.add(new Integer(10));
int i = (Integer)list.get(0).intValue();
JDK 1.5后 java中提供了自动装箱拆箱功能,使用
list.add(10);
int i = (Ingeter)list.get(0);
常用操作:
列表集合
2.1、ArrayList:基于数组实现的,检索较快,增加和删除较慢,效率高。
2.2、LinkedList:基于链表实现的,检索较慢,增加和删除很快。
2.3、Vector:线程安全的集合,效率低。
2.4、常用操作
添加:add()
删除:remove() clear()
修改:set()
检索:get()
迭代:
for(针对下标)
foreach
iterator
判断存在:contains()
将集合转换成一个数组:toArray()
List集合重写了toString方法,可以将集合中的元素依次输出。
1 import java.util.ArrayList; 2 import java.util.Collection; 3 import java.util.Iterator; 4 import java.util.Scanner; 5 6 public class ListArray { 7 public static void main(String[] args) { 8 System.out.println("请输入班级学院姓名,并以over作为结束"); 9 Scanner scanner = new Scanner(System.in); 10 ArrayList list = new ArrayList(); 11 do { 12 String name = scanner.next(); 13 if (name.equalsIgnoreCase("over")) 14 break; 15 list.add(name); 16 } while (true); 17 System.out.println(list); 19 } 20 21 }
List集合常用方法
1 import java.util.ArrayList; 4 import java.util.Scanner; 5 6 import javax.swing.text.html.HTMLDocument.Iterator; 7 8 public class Demo { 9 public static Scanner scanner = new Scanner(System.in); 10 11 public static void main(String[] args) { 12 ArrayList listA = new ArrayList(); 13 ArrayList listB = new ArrayList(); 14 System.out.println("请输入a学员的姓名,输入以over结束"); 15 inputName(listA); 16 System.out.println("请输入b学员的姓名,输入以over结束"); 17 inputName(listB); 18 19 System.out.println("请输入要查找的学员姓名"); 20 String name = scanner.next(); 21 int pos = listA.indexOf(name); 22 if (pos == -1) { 23 System.out.println("没有找到"); 24 } else { 25 System.out.println("找到了,位置是" + pos); 26 } 27 System.out.println("请输入要删除的学院姓名"); 28 String deName = scanner.next(); 29 if (listA.remove(deName)) { 30 System.out.println("删除成功"); 31 } else { 32 System.out.println("没有该学员"); 33 } 34 } 35 36 public static void inputName(ArrayList list) { 37 do { 38 String name = scanner.next(); 39 if (name.equalsIgnoreCase("over")) 40 break; 41 list.add(name); 42 } while (true); 43 } 44 }
Set集合:一堆无序并不重复的数据
set集合和list集合很多用法是相同的,但是set集合中的元素是无序的,元素也不能重复,set集合中常用类为HashSet
常用操作
添加:add()
删除:remove() clear()
修改:add()
迭代:
foreach
iterator
判断存在:contains()
返回集合中元素的数量:size()
list集合可以用for循环获得索引来进行。但是set必须要通过迭代器进行。
1 import java.util.HashSet; 2 import java.util.Iterator; 3 4 public class SetIterator { 5 public static void main(String[] args) { 6 HashSet set = new HashSet(); 7 set.add("a"); 8 set.add("b"); 9 set.add("c"); 10 set.add("d"); 11 Iterator iterator = set.iterator(); 12 while(iterator.hasNext()){ 13 String str = (String) iterator.next(); 14 System.out.println(str); 15 16 } 17 } 18 }