69期-Java SE-015_集合-1-001-002

### Collection

接口,一个Collection存储一组无序、不唯一的对象,一般不会直接使用该接口。

Collection 常用方法

- int size()                                    获取集合的长度
- boolean isEmpty()                                                       判断集合是否为空
- boolean contains(Object o)                                       判断集合中是否存在某个对象
- Iterator<E> itertor()                                                    实例化Iterator接口,遍历集合
- Object[] toArray()                                                         将集合转换为一个Object类型的数组
- boolean add(Object o)                                                向集合中添加元素
- boolean remove(Object o)                                         从集合中删除元素
- boolean containsAll(Collection c)                              判断集合中是否存在某个集合的所有元素
- boolean addAll(Collection c)                                      向集合中添加某个集合的所有元素
- boolean removeAll(Collection c)                               从集合中移除某个集合的所有元素
- void clear()                                                                    清空集合,删除集合中的所有元素
- boolean equals(Object o)                                           比较两个集合是否相等
- int hashCode()                                                             返回集合的hash值

### Collection 的子接口

- List:存放有序、不唯一的元素。
- Set:存放无序、唯一的元素。
- Queue:队列集合。

#### List接口

List是Collection主要的子接口,一个List可以存储一组有序、不唯一的对象。

List接口在继承Collection接口的基础之上,进行啦了方法扩展。

- Object get(int index)                                            通过下标获取集合中指定位置的元素。
- Object set(int index,Object o)                            向集合中指定位置添加元素,如果该位置已存在某个元素,则直接替换
- int indexOf(Object o)                                           查找某个对象在集合中的具体位置
- ListIterator<E> listIterator()                               实例化ListIterator对象
- List<E> subList(int fromIndex,int toIndex)      根据两个指定的下标获取集合的子元素

#### List接口的实现类

- ArrayList 

ArrayList 的特点是查询元素效率很高,只需要通过寻址地址和下标即可快速定位到目标元素,缺点是添加或删除元素,效率很低,因为要移动兄弟元素的位置。

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

public class Test {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add("Hello");
        arrayList.add("World");
        arrayList.add("JavaSE");
        arrayList.add("JavaME");
        arrayList.add("JavaEE");
        System.out.println("list:"+arrayList);
        System.out.println("list的长度是:"+arrayList.size());
        System.out.println("list是否包含Java:"+arrayList.contains("Java"));
        for(int i=0;i<arrayList.size();i++) {
            System.out.println(arrayList.get(i));
        }
        Iterator iterator = arrayList.iterator();
        while(iterator.hasNext()) {
            String item = (String)iterator.next();
            System.out.println(item);
        }
        arrayList.remove("World");
        System.out.println(arrayList);
        arrayList.remove(3);
        System.out.println(arrayList);
        arrayList.add(1, "SQL");
        System.out.println(arrayList);
        int index = arrayList.indexOf("JavaSE");
        System.out.println(index);
        List list = arrayList.subList(1, 3);
        System.out.println(list);
    }
}
```

Vector 是一个早期的List实现类,用法基本与ArrayList一致。Stack 是 Vector 的一个子类,实现了"后进先出"的栈。

```java
import java.util.Vector;

public class Test2 {
    public static void main(String[] args) {
        Vector vector = new Vector();
        vector.addElement("Hello");
        vector.add("World");
        for(int i=0;i<vector.size();i++) {
            System.out.println(vector.get(i));
        }
    }
}
```

```java
import java.util.Stack;

public class Test3 {
    public static void main(String[] args) {
        Stack stack = new Stack();
        stack.push("Hello");
        stack.push("JavaSE");
        stack.push("JavaME");
        stack.push("JavaEE");
        System.out.println(stack);
        for(int i=0;i<stack.size();i++) {
            System.out.println(stack.get(i));
        }
        System.out.println("栈顶元素:"+stack.peek());
        System.out.println(stack);
        System.out.println("栈顶元素:"+stack.pop());
        System.out.println(stack);
    }
}
```

LinkedList 实现了一个"先进先出"的队列,采用链表的形式存储分散的内存空间,

```java
import java.util.LinkedList;

public class Test4 {
    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.add("Hello");
        list.add("World");
        list.add("Java");
        System.out.println(list);
        list.offer("JavaSE");
        System.out.println(list);
        list.addLast("JavaSE2");
        System.out.println(list);
        list.push("JavaME");
        System.out.println(list);
        list.addFirst("JavaME2");
        System.out.println(list);
        System.out.println("第一个元素是:"+list.peek());
        System.out.println(list);
        System.out.println("最后一个元素是:"+list.peekLast());
        System.out.println(list);
        System.out.println(list.pop());
        System.out.println(list);
    }
}
```

PriorityQueue 在使用的时候需要注意,添加到该队列中的数据必须有序,即对象具备排序的功能。

```java
import java.util.PriorityQueue;

public class Test5 {
    public static void main(String[] args) {
        PriorityQueue queue = new PriorityQueue();
        queue.add(new A(2));
        queue.add(new A(1));
        System.out.println(queue);
    }
}

class A implements Comparable{
    private int num;
    public A(int num) {
        this.num = num;
    }
    /**
     * A.compareTo(B)
     * 1表示A大于B
     * 0表示A等于B
     * -1表示A小于B
     */
    @Override
    public int compareTo(Object o) {
        // TODO Auto-generated method stub
        A a = (A)o;
        if(this.num > a.num) {
            return 1;
        }else if(this.num == a.num) {
            return 0;
        }else {
            return -1;
        }
    }
    @Override
    public String toString() {
        return "A [num=" + num + "]";
    }
}
```

Test.java

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

public class Test {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        arrayList.add("Hello");
        arrayList.add("World");
        arrayList.add("JavaSE");
        arrayList.add("JavaME");
        arrayList.add("JavaEE");
        arrayList.add(null);
        System.out.println("list:"+arrayList);
        System.out.println("list的长度是:"+arrayList.size());
        System.out.println("list是否包含Java:"+arrayList.contains("Java"));
        for(int i=0;i<arrayList.size();i++) {
            System.out.println(arrayList.get(i));
        }
        Iterator iterator = arrayList.iterator();
        while(iterator.hasNext()) {
            String item = (String)iterator.next();
            System.out.println(item);
        }
        arrayList.remove("World");
        System.out.println(arrayList);
        arrayList.remove(3);
        System.out.println(arrayList);
        arrayList.add(1, "SQL");
        System.out.println(arrayList);
        int index = arrayList.indexOf("JavaSE");
        System.out.println(index);
        List list = arrayList.subList(1, 3);
        System.out.println(list);
    }
}

Test2.java

import java.util.Vector;

public class Test2 {
    public static void main(String[] args) {
        Vector vector = new Vector();
        vector.addElement("Hello");
        vector.add("World");
        for(int i=0;i<vector.size();i++) {
            System.out.println(vector.get(i));
        }
    }
}

Test3.java

import java.util.Stack;

public class Test3 {
    public static void main(String[] args) {
        Stack stack = new Stack();
        stack.push("Hello");
        stack.push("JavaSE");
        stack.push("JavaME");
        stack.push("JavaEE");
        System.out.println(stack);
        for(int i=0;i<stack.size();i++) {
            System.out.println(stack.get(i));
        }
        System.out.println("栈顶元素:"+stack.peek());
        System.out.println(stack);
        System.out.println("栈顶元素:"+stack.pop());
        System.out.println(stack);
    }
}

Test4.java

import java.util.LinkedList;

public class Test4 {
    public static void main(String[] args) {
        LinkedList list = new LinkedList();
        list.add("Hello");
        list.add("World");
        list.add("Java");
        System.out.println(list);
        list.offer("JavaSE");
        System.out.println(list);
        list.addLast("JavaSE2");
        System.out.println(list);
        list.push("JavaME");
        System.out.println(list);
        list.addFirst("JavaME2");
        System.out.println(list);
        System.out.println("第一个元素是:"+list.peek());
        System.out.println(list);
        System.out.println("最后一个元素是:"+list.peekLast());
        System.out.println(list);
        System.out.println(list.pop());
        System.out.println(list);

    }
}

Test5.java

import java.util.PriorityQueue;

public class Test5 {
    public static void main(String[] args) {
        PriorityQueue queue = new PriorityQueue();
        queue.add(new A(2));
        queue.add(new A(1));
        System.out.println(queue);
    }
}

class A implements Comparable{
    private int num;
    public A(int num) {
        this.num = num;
    }
    /**
     * A.compareTo(B)
     * 1表示A大于B
     * 0表示A等于B
     * -1表示A小于B
     */
    @Override
    public int compareTo(Object o) {
        // TODO Auto-generated method stub
        A a = (A)o;
        if(this.num > a.num) {
            return 1;
        }else if(this.num == a.num) {
            return 0;
        }else {
            return -1;
        }
    }
    @Override
    public String toString() {
        return "A [num=" + num + "]";
    }
}

原文地址:https://www.cnblogs.com/HiJackykun/p/11172930.html

时间: 2024-08-30 11:33:44

69期-Java SE-015_集合-1-001-002的相关文章

69期-Java SE-016_集合-2-001-002

### Set集合 Set是Collection的子接口,Set接口采用散列的存储方式,所有元素是无序的,可以存储一组无序且唯一的对象. 实际开发中不能直接实例化Set对象,需要对其实现类进行实例化同时完成相关业务操作,Set常用的实现类HashSet.LinkedHashSet.TreeSet. #### HashSet 存储一组无序且唯一的对象,这里的无序是指元素的存储顺序和遍历顺序不一致. ```java import java.util.HashSet; import java.util

69期-Java SE-035_MySQL-6 存储过程、SQL练习 -doing

### 存储过程 存储过程是一组为了完成特定功能的 SQL 语句集合,经过编译后存储在数据库中,用户通过指定存储过程的名称以及参数来执行相应的存储过程. 一次编写,多次调用,避免开发人员重复编写相同的 SQL 语句,存储过程是在数据库中存储和执行的,可以减少客户端和服务端之间的数据传输,从而提高效率. ### 优点 - 模块化的程序设计,只需要创建一次存储过程,以后就可以在程序中调用该存储过程任意次. - 执行速度更快,如果某个操作需要执行大量的 SQL 语句或者需要重复执行 SQL 语句,存储

69期-Java SE-040_JDBC-4

C3P0 的使用 1.c3p0-config.xml 名称不能自定义 ```xml <c3p0-config> <named-config name="testc3p0"> <property name="user">root</property> <property name="password">root</property> <property name=&quo

69期-Java SE-031_MySQL-001-002 创建表、MySQL数据类型、数据的管理(数据库结构、数据表、数据)、SQL 函数

### 创建表 1.创建数据库 ```sql create database mstest default character set utf8 collate utf8_general_ci ``` 2.创建数据表 ```sql create table user( id int, name varchar(11) ) ``` Java 数据类型:基本数据类型 byte short int long double float boolean char ? 引用类型 MySQL 数据类型 - 整

69期-Java SE-002_变量、运算符-001-002

- 声明变量的数据类型和变量名. - 给内存空间赋值,该值就是变量值. - 通过变量名使用变量. ```java public class Hello { public static void main(String[] args) { //1.开辟内存空间,定义变量名 int num1; //2.赋值 num1 = 10; //3.使用变量 System.out.println(num1); } } ``` ```java public class Hello { public static

69期-Java SE-003_流程控制、循环-001-002

### 位运算符 十进制和二进制的转换. - 十进制转二进制:目标数除以二,如果能除尽,则该位计作零,如果除不尽,则该位计作一,再对商继续除以二,以此类推,直到商为零,然后将每一位的结果进行反序组合就是对应的二进制结果,10 转为二进制 1010,17 转为二进制 10001 - 二进制转十进制:从目标数最右侧算起,本位的数值乘以本位的权重,权重就是2的第几位的位数减一次方,如果第1位就是2的(1-1)次方,第2位就是2的(2-1)次方,第3位就是2的(3-1)次方…,将每一位的数值和本位权重相

69期-Java SE-004_循环、数组-001-002

Hello.java import java.util.Scanner; public class Hello { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = "yes"; int num; while(str.equals("yes")) { System.out.print("请输入学生编号:")

69期-Java SE-036_MySQL-7 SQL练习 -doing

第一道: 现有图书管理数据库的三个关系模式,他们的字段分别如下: 图书表:总编号, 分类号, 书名, 作者, 出版单位, 单价 读者表:借书证号, 单位, 姓名, 性别, 职称, 地址 借阅表:借书证号, 总编号, 借书日期 以上表对应的字段明细如下: book : b_no ,b_type ,b_name , b_author ,b_publish ,b_price reader : r_no , r_unit , r_name ,r_sex ,r_pro ,r_address borrow

69期-Java SE-005_二维数组、综合练习-001-002

Test.java public class Test { public static void main(String[] args) { int[] array = {73,80,62,93,96,87}; //求最大值 int max = array[0]; for(int i=1;i<array.length;i++) { if(array[i]>max) { max = array[i]; } } System.out.println("数组中的最大值是"+max