集合是java中提供的一种容器,可以用来存储多个数据。
集合和数组的区别:
数组的长度是固定的,集合的长度是可变的。数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。
Collection的常用功能:
- add():把给定的对象添加到当前集合中 。clear():清空集合中所有的元素。remove(E e): 把给定的对象在当前集合中删除。contains(E e): 判断当前集合中是否包含给定的对象。isEmpty(): 判断当前集合是否为空。size(): 返回集合中元素的个数。toArray(): 把集合中的元素,存储到数组中。contains():集合是否包含某个元素。
List:
- ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素。linkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素。Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素。
ArrayList较为常用,现做详细讨论。
java.util.ArrayList 本质是可变数组,存储在内的数据称为元素。此类提供一些方法来操作内部存储 的元素。 ArrayList 中可不断添加元素,其大小也自动增长。
书写格式:ArrayList
代码示例:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
Student s = new Student("张三");
Student s1 = new Student("李四");
Student s2 = new Student("王五");
list.add(s);
list.add(s1);
list.add(s2);
}
}
ArrayList的遍历:
1.使用for循环:
import java.util.ArrayList;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList();
Student s = new Student("张三");
Student s1 = new Student("李四");
Student s2 = new Student("王五");
list.add(s);
list.add(s1);
list.add(s2);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
2.使用Iterator迭代集合中元素:
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
String s = "张三";
String s1 = "李四";
String s2 = "王五";
list.add(s);
list.add(s1);
list.add(s2);
Iterator it = list.iterator();
while(it.hasNext()){
String ss = it.next();
System.out.println(ss);
}
}
}
Set:使用较少,它与list的区别:
- list是有序的,set是无序的。list元素可以重复,set不能重复,重复的会覆盖。list可以直接通过索引获取元素,set不能。
Map:
- Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map 中的集合,元素是成对存在(键值对)的,每个元素由键与值两部分组成,通过键可以找对所对应的值。Collection 中的集合称为单列集合, Map 中的集合称为双列集合。Map 中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
常用方法:
- public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的 值。public V get(Object key) 根据指定的键,在Map集合中获取对应的值。public Set
import java.util.HashMap;
public class Test {
public static void main(String[] args) {
HashMap map = new HashMap<>();
map.put(1, "汽车");
map.put(2, "苹果");
map.put(3, "桃子");
System.out.println(map); //输出
System.out.println(map.remove(1));
System.out.println(map);
System.out.println(map.get(2));
System.out.println(map.get(3));
}
}
Map集合遍历键找值方式:
import java.util.HashMap;
import java.util.Set;
public class Test {
public static void main(String[] args) {
HashMap map = new HashMap();
//添加元素到集合
map.put("胡歌", "霍建华");
map.put("郭德纲", "于谦");
map.put("薛之谦", "大张伟");
Set keys = map.keySet();
// 增强for循环,遍历键集 得到 每一个键
for (String key : keys) {
//key 就是键
//获取对应值
String value = map.get(key);
System.out.println(key+"的CP是:"+value);
}
}
}
Map集合遍历键值对方式:
HashMapmap = new HashMap (); // 添加元素到集合 map.put("胡歌", "霍建华"); map.put("郭德纲", "于谦"); map.put("薛之谦", "大张伟"); // 获取 所有的 entry对象 entrySet Set > entrySet = map.entrySet(); // 遍历得到每一个entry对象 for (Entry entry : entrySet) { // 解析 String key = entry.getKey(); String value = entry.getValue(); System.out.println(key+"的CP是:"+value); }



