高级java_2 JAVA 集合

Collection

  • JAVA collection包含三大类集合接口
接口
规则集Set 接口
线性表List 接口
Map 接口
  • 接口和类都定义在java.util中
    在这里插入图片描述

Set

Set是一个接口,继承自collection,规定集合中不能包含相同元素。

HashSet

  • 好处:检索速度快
  • 复杂性:需要一个哈希函数给出地址(HashCode)
  • 集合中的数据不会按照插入顺序存储
import java.util.*;
class testHashset{
    public static void main(String[] args) {
        Set<String> set = new HashSet<String>();
        set.add("London");
        set.add("Paris");
        set.add("New york");
        set.add("San francisco");
        set.add("Beijing");
        set.add("New york");
        System.out.println(set);
        //[Beijing, New york, London, Paris, San francisco]

        Iterator iterator= set.iterator();
        while(iterator.hasNext()){
            System.out.print(iterator.next()+" ");
        }
        //Beijing New york London Paris San francisco 
    }
}

LinkedHashSet

  • 是HashSet的子类
  • 支持集合内排序
  • 按元素插入序提取数据
import java.util.*;
class testLinkedHashset{
   public static void main(String[] args) {
       Set<String> set = new LinkedHashSet();
       set.add("London");
       set.add("Paris");
       set.add("New york");
       set.add("San francisco");
       set.add("Beijing");
       set.add("New york");
       System.out.println(set);
       // [London,Paris,New York, San Francisco,Beijing]

       for (Object element:set)                  	
           System.out.print(element.toString()+" ");
       //London,Paris,New York, San Francisco,Beijing
   }
}

树形集

  • 有序集SortedSet是Set的子接口
  • 树形集TreeSet是实现SortedSet接口的一个具体类
  • 元素间必须可比较
  • 可以产生比较序
import java.util.*;
public class TestTreeSet{
   public static void main(String[] args) {
       Set<String> set = new HashSet();
       set.add("London");
       set.add("Paris");
       set.add("New york");
       set.add("San francisco");
       set.add("Beijing");
       set.add("New york");
       System.out.println(set);
       //[Beijing, New york, London, Paris, San francisco]
       TreeSet<String> treeSet= new TreeSet(set);//以字母排序
       System.out.println(treeSet);
       //[Beijing, London, New York, Paris, San Francisco]    

       for (Object element:set)
           System.out.print(element.toString()+" ");
       //Paris Beijing London San Francisco New York
   }
}

比较器接口

  • 比较器comparator是个接口
  • 有两个方法compare和equals
  • Compare 返回值含义:
    • 负值 前参小于后参
    • 0 相等
    • 正值 前参大于后参

List

  • List接口扩展collection接口
  • 支持元素重复
  • 有序
  • 采用下标(position)操作数据

ArrayList

  • ArrayList将元素存在数组中
  • 数组动态创建
  • 超过数组容量时,增加数组容量
  • 不能自动收缩 trimToSize()

LinkedList

  • LinkedList存储元素入链表
  • 便于在任意位置上插入和删除数据
  • 可以从两端提取,插入和删除元素
  • hasPrecious:反向打印
import java.util.*;
public class TestArrayAndLinkedList {
   public static void main(String[] args) {
       List<Integer> arrayList = new ArrayList();
       arrayList.add(1);
       arrayList.add(2);
       arrayList.add(3);
       arrayList.add(1);
       arrayList.add(4);
       arrayList.add(0, 10);
       arrayList.add(3, 30);
       System.out.println(arrayList);
       //[10,1,2,30,3,1,4]

       LinkedList<Object> linkedList = new LinkedList(arrayList);
       linkedList.add(1, "red");//在0之后加一个元素,也就是在1的位置添加一个元素
       linkedList.removeLast();
       linkedList.addFirst("green");

       // display forward
       ListIterator listiterator = linkedList.listIterator();
       while (listiterator.hasNext()) {
           System.out.print(listiterator.next() + " ");
       }
       System.out.println();

       // display backward
       ListIterator listiterator2 = linkedList.listIterator(linkedList.size());
       while (listiterator2.hasPrevious()) {
           System.out.print(listiterator2.previous() +" ");
       }
       System.out.println();
       //1 3 30 2 1 red 10 green
   }
}

集合的静态方法

  • 高层父类的静态方法
  • 用于解决一些子类本身不能解决的问题
  • 比如给HashSet中的数据排序
sort(list:List,c:Comparator):void
binarySearch(list:List,key:Object):int//二分查找

Vector,Stack,Queue,Map

Vector,Stack

  • 向量和数组相似,都可以保存一组数据(数据列表)。数组的大小是固定的,向量的容量是可变的。
  • 出了对多线程同步访问有支持外,功能上与ArrayList完全相同。
  • Stack是Vector的子类。

Queue

方法用法
Offer()在队列中插入一个元素
Poll()返回并删除队头
Peek()返回不删除队头

PriorityQueue:根据元素的自然顺序排序,拥有最小数值的元素被赋予最高优先级。

Map

  • 数据结构中的图G:=<V,L>
  • V是顶点集,L是边集
  • Collection的子接口Map
    建立 “键”与“元素”间的一一映射
    “键”不一定是整数(数组下标)
    “键”可以使任意类型的对象
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值