java集合的使用

Java集合

java集合接口(接口不能直接实例化、要实例化他的子类):

  • Collection 接口
  • List接口
  • Set接口
  • Iterator接口
  • Map接口

接口之间的关系图

接口之间关系

集合

  • 1.集合可以理解为一个动态的对象数组,不同的是集合的对象内容可以任意扩充
  • 2.集合的特点:
    性能高,容易扩展和修改

    List接口

    List继承自Collection
  • 1.List接口可以存放任意的数据,而且在List接口中内容是可以重复的
  • 2.List接口常用子类
    • Arraylist
    • Vector

Arraylist和Vector的实现差不多,他们之间的区别就是

  • Arraylist:采用异步处理方式,性能高,属于非线程安全。
  • Vector:采用同步处理方式,性能低,属于线程安全。

ArrayList的简单实例

import java.util.ArrayList;
import java.util.List;

public class ListTest {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    //List是一个接口,必须实例化其子类。
    List<String> list=new ArrayList<String>();
    //集合使用add添加
    list.add("添加字符串");
    list.add("A");
    list.add("B");
    list.add("C");

    for (int i = 0; i <list.size(); i++) {
        //集合使用get方法来获取元素内容。
        System.out.println(list.get(i));
    }
    //remove删除操作
    list.remove(0);
    System.out.println("删除后的操作");
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i));
    }
    System.out.println("判断集合是否为空"+list.isEmpty());
    //indexOf返回值是元素的位置。
    System.out.println("判断元素是否存在,例如C: "+list.indexOf("C"));
}

}

Set接口

  • 1.Set接口中不能加入重复元素,但是可以排序
  • 2.常用子类:HashSet 和TreeSet

HashSet:无順序性,查找速度快
(注意相同多个D,set只会读取一个)
TreeSet:有排序性(依字母),由紅黑樹所建

import java.util.TreeSet;

public class SetTest {

public static void main(String[] args) {
    // TODO Auto-generated method stub

//        Set<String> set=new HashSet<String>();
    Set<String> set=new TreeSet<String>();
    set.add("2");
    set.add("4");
    set.add("1");
    set.add("31");
    set.add("a");
    set.add("D");
    set.add("D");

    System.out.println(set);
}

}

Iterator接口

1.集合输出的标准操作:标准做法,使用Iterator接口
2.操作原理:Iterator是专门的迭代输出接口,迭代输出就是将元素一个个进行判断,判断其是否有内容,如果有内容则把内容取出。

Iterator的实例化比较特别:是通过集合来获得他的一个对象,来实例化。

hasNext():判断集合中元素是否遍历完毕,如果没有,就返回true
next() :返回下一个元素

package com.zsz.develop;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorTest {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    List<Integer> list=new ArrayList<Integer>();
    for (int i = 0; i < 10; i++) {
        list.add(i);

    }
    //使用Iterator标准输出格式来输出
    Iterator<Integer> iterator=list.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
}

}

Map接口

1.保存形式:是以Key—value对的方式来保存
2.常用子类

  • HashMap:无序存放,KEY不允许重复、
  • Hashtable:无序存放,KEY不允许重复、

在list,set中添加数据都是使用add,而map是使用put添加数据。
通过map.get()可以得到Key中的Value。

要得到所以的键:Map.keySet() 返回类型是set<>;
要得到所以的值:Map.Value 返回类型是Collection<>;

map实例

package com.zsz.develop;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapTest {

public static void main(String[] args) {
    // TODO Auto-generated method stub

    //键值对的形式来存储数据
    Map<String, String> map=new HashMap<String, String>();
    map.put("key1", "first");
    map.put("key2", "first2");
    map.put("key3", "first3");
    map.put("key4", "first4");

    //得到所以的键
    Set<String> set=map.keySet();
    Iterator<String> iterator=set.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }

    System.out.println("上面为全部键,下面为全部值");
    //得到所有的值
    Collection<String> collection=map.values();
    Iterator<String> i=collection.iterator();
    while (i.hasNext()) {
        System.out.println(i.next());

    }

    //判断是否存在键
    System.out.println("是否存在键: "+map.containsKey("key1"));
    //判断是否存在值
    System.out.println("是否存在值: "+map.containsKey("first1"));

}


}