其中看到了这么大的框架,千万不要被吓到了
,其实都是很有特点的Collection list
有序(存储的数据顺序一致),元素都有索引(元素可以重复)set
元素不可以重复,无序List Vector :
内部是数组结构,是同步的ArrayList:
内部是数组结构,不是同步的,代替了Vector,查询数据比较的快,但是增删比较的慢LinckedList :
内部是链表结构,不是同步的数据的增删比较的快,但是添加比较的慢SetHashSet
(无顺序)HashSet
结构式哈希表,存储元素的时候使用的元素的
hashcode方法来判断位置,如果位子相同,就会调用equals 方法比较元素的时候一般要复写
hashCode和equals 方法LinkedHashSet
有顺序TreeSet可以对元素进行排序,是不同步的判断元素的唯一的方式是根据比较的结果判断是
0(相同元素),还是不是0(不是相同元素);比较元素排序的方法
1:让元素自身有比较功能,那么要实现
Comparable借口,覆盖comparable中的方法比较排序方法
2:让集合自身定义比较功能,定义一个列实现
Comparable接口,覆盖其中的方法Map:添加一对元素,其中
Map也被称为单列map
中存储的是键值对,map中的键必须是唯一的HashTable:
内部是Hash表同步的,不允许存在null键和null为值Propertise
用来键值对存配置文件的,和IO流结合HashMap
:内不是Hash表,不是同步的,允许null为键,null为值TreeMap
:内部是二叉树,不是同步的,可以对Map集合中的键进行排序如何取出
Map中的元素方法
1.通过keySet()方法获取所有的键所在的Set集合,然后迭代每一个键,来获取元素方法
2.通过获取键值对的关系。- package MAPStudy;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
- public class GetMapDemo {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //实例化对象
- HashMap<String,Integer> hash = new HashMap<String,Integer>();
- //添加数据
- hash.put("yellowcong", 18);
- hash.put("黑马", 100);
- hash.put("Steve Jobs", 56);
-
- // getMap(hash);//调用方法一
-
- getMap_2(hash);//第二种方法
-
-
- }
- private static void getMap_2(HashMap<String, Integer> hash) {
- Set<Map.Entry<String,Integer>> set = hash.entrySet();
-
- Iterator<Map.Entry<String,Integer>> it = set.iterator();
-
- while(it.hasNext()){
- Map.Entry<String, Integer> entry = it.next(); // 迭代获取关系
- String key = entry.getKey();//获取键
- int value = entry.getValue();//获取值
-
-
- System.out.println(key+":"+value);
- }
- }
- //第一种方法,通过获取键的集合
- public static void getMap(HashMap<String, Integer> hash) {
- //获取Set集合
- Set set = hash.keySet();
-
- //通过Iteraor
- Iterator<String> it =set.iterator();
-
- while(it.hasNext()){
- String name = it.next();
- int age = hash.get(name);
-
- System.out.println(name+":"+age);
- }
- }
- }
复制代码Iterator
和ListIterator 的区别- package MAPStudy;
- import java.util.ArrayList;
- import java.util.Iterator;
- import java.util.ListIterator;
- public class List_Iterator {
- /**
- * 其中,我们通过一个例子来学习ListIterator 和 Iterator
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- //其中实力化ArrayList这个类
- ArrayList<String> arr = new ArrayList<String>();
-
- //在集合中添加数据,其中集合中的方法无非就是增删改查
- //add remove set get
- arr.add("狂飙的");
- arr.add("yellowcong");
- arr.add("我是黑马");
- System.out.println(arr);
-
- //test_Iterator(arr);//其中这个是Iterator会出现错误
-
- test_ListIterator(arr);
-
- }
-
- /*
- * java.util.ConcurrentModificationException
- * 其中这个会出现问题,因为在迭代器中不能操作元素,不然会发生异常
- * 但是用ListIterator 可以解决这个问题
- */
- public static void test_Iterator(ArrayList<String> arr){
- Iterator<String> it = arr.iterator(); // 获取迭代器
-
- while(it.hasNext()){
- Object obj = it.next(); //其中 it.next返回的数据都是Object(上帝),需要向下转型
- if(obj.equals("我是黑马")){
- arr.add(1, "yellowcong是黑马");
- }
- }
- //将集合打印
- System.out.println(arr);
- }
-
- //使用ListIterator
- public static void test_ListIterator(ArrayList<String> arr){
- ListIterator<String> it = arr.listIterator();
- while(it.hasNext()){
- Object obj = it.next();
- if(obj.equals("我是黑马")){
- it.set("yellowcong是黑马");
- }
- }
- //将集合打印
- System.out.println(arr);
- }
- }
复制代码迭代器和高级
For1.for
循环:主要是用于循环次数确定的循环.还可以用于循环输出数组里的每个元素
2.iterator
迭代主要用于循环输出一个集合中的每个元素- package MAPStudy;
- import java.util.ArrayList;
- import java.util.Iterator;
- public class Itrator_FOR {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- ArrayList<String> arr = new ArrayList<String>();
-
- arr.add("疯狂的");
- arr.add("yellow");
- arr.add("cong");
- arr.add("黑马");
-
-
- getArrayList_1(arr);//调用高级for
- getArrayList_2(arr);//调用Iterator
-
-
- }
- public static void getArrayList_2(ArrayList<String> arr) {
- // TODO Auto-generated method stub
- Iterator<String> it =arr.iterator();
- while(it.hasNext()){
- String name = it.next();
- System.out.println(name);
- }
- }
- public static void getArrayList_1(ArrayList<String> arr) {
- for(String name: arr){
- System.out.println(name);
- }
- }
- }
复制代码