[J2EE]java集合

简介: Collection接口集合可以理解为一个动态数组,集合中的对象可以任意扩充.集合的特点:性能高;容易扩展。Collection的常用子接口:List、Set一、List接口list接口可以存放任意类型的数据,而且在List接口中内容可以重复。

Collection接口

  1. 集合可以理解为一个动态数组,集合中的对象可以任意扩充.
  2. 集合的特点:性能高;容易扩展。
  3. Collection的常用子接口:List、Set

一、List接口

list接口可以存放任意类型的数据,而且在List接口中内容可以重复。
List接口常用子类有:ArrayList、Vector。

1.1ArrayList

下面的Demo中展示了怎样创建ArrayList对象、添加元素、访问元素、移除元素。

package ucas.collection.demo;
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
    public static void main(String[] args) {
        List<String> lists = null;
        lists = new ArrayList<String>();// list可重复
        // 添加
        lists.add("A");
        lists.add("B");
        lists.add("A");
        for (int i = 0; i < lists.size(); i++) {
            System.out.println(lists.get(i));
        }
        System.out.println("判断集合lists是否为空:"+lists.isEmpty());
        //返回第一次出现的位置
        System.out.println("A是否存在:"+lists.indexOf("A"));
        // 移除
        lists.remove(0);
        System.out.println("移除第一项以后:");
        for (int i = 0; i < lists.size(); i++) {
            System.out.println(lists.get(i));
        }
    }
}

1.2Vector

Vector和ArrayList在使用上一样,区别主要在于内部实现上的性能与是否是线程安全上:

比较项 ArrayList Vector
推出时间 jdk1.2 jdk1.0
处理方式 采用异步处理方式,性能高 采用同步处理方式,性能低
是否是线程安全 非线程安全 线程安全

VectorDemo

package ucas.collection.demo;

import java.util.List;
import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        // ArrayList jdk1.2之后推出,采用异步处理方式,性能高,属于非线程安全;
        //Vector jdk1.0之后推出, 采用同步处理方式,性能低,属于线程安全。
        //方法使用都一样
        List<String> lists = null;
        lists = new Vector<String>();

        lists.add("A");
        lists.add("B");
        for (int i = 0; i < lists.size(); i++) {
            System.out.println(lists.get(i));
        }
    }
}

二、Set接口

Set接口中不可以加入重复元素,但是可以排序 。Set常用子类 有2个,散列存放使用HashSet ,有序存放使用TreeSet。

package ucas.collection.demo;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class SetDemo {
    public static void main(String[] args) {
        /*
         * Set接口中不可以加入重复元素,但是可以排序 Set常用子类 散列存放:HashSet 
         * 有序存放:TreeSet
         */

        Set<String> s = null;
        s = new TreeSet<String>();
        s.add("B");
        s.add("A");
        s.add("C");
        s.add("D");
        s.add("E");
        s.add("F");
        s.add("G");
        System.out.println(s);
    }
}

输出:

[A, B, C, D, E, F, G]

HashSet:

package ucas.collection.demo;

import java.util.HashSet;
import java.util.Set;

public class HashSetDemo {
    public static void main(String[] args) {

          Set<String> hs=new HashSet<String>();
          hs.add("two");
          hs.add("one");
          hs.add("three");
          hs.add("four");
          hs.add("five");
          hs.add("six");
          System.out.println(hs);

    }
}

输出

[six, four, one, two, three, five]

三、Map接口

Map接口采用key->value的方式保存
常用子类:
HashMap:无序存放,key值不允许重复
HashTable:无序存放,key值不允许重复

package ucas.collection.demo;

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

public class MapDemo01 {
    public static void main(String[] args) {

        Map<String, String> map = new HashMap<String, String>();
        map.put("key1", "java进阶1");
        map.put("key2", "java进阶2");
        map.put("key3", "java进阶3");
        map.put("key4", "java进阶4");
        map.put("key5", "java进阶5");
        map.put("key6", "java进阶6");

        System.out.println(map.get("key1"));

        // 判断key值是否存在
        if (map.containsKey("key12")) {
            System.out.println("key存在");
        } else {
            System.out.println("key不存在");
        }

        // 判断value是否存在

        if (map.containsValue("java进阶5")) {
            System.out.println("value值存在");
        } else {
            System.out.println("value值不存在");
        }

        // Iterator循环输出
        System.out.println(map.keySet());

        Set<String> s = map.keySet();
        Iterator<String> iter = s.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }

        // 获取全部值

        Collection<String> c = map.values();
        Iterator<String> iter2 = c.iterator();
        while (iter2.hasNext()) {
            System.out.println(iter2.next());
        }
    }
}

Iterator

Iterator用于迭代输出集合中的元素,迭代输出就是将元素一个一个进行判断,判断有内容则把内容取出。
这里写图片描述

package ucas.collection.demo;

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

public class IteratorDemo {
    public static void main(String[] args) {
        List<String> lists = new ArrayList<String>();

        lists.add("Q");
        lists.add("W");
        lists.add("E");
        lists.add("A");
        lists.add("B");
        Iterator<String> iter = lists.iterator();
        while (iter.hasNext()) {
            // lists.remove(1);Iterator迭代输出集合的过程中不能删除元素,否则会出现错误
            System.out.println(iter.next());
        }

    }
}
目录
相关文章
|
6天前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
167 100
|
6天前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
159 101
|
19天前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
3月前
|
存储 安全 Java
常见 JAVA 集合面试题整理 自用版持续更新
这是一份详尽的Java集合面试题总结,涵盖ArrayList与LinkedList、HashMap与HashTable、HashSet与TreeSet的区别,以及ConcurrentHashMap的实现原理。内容从底层数据结构、性能特点到应用场景逐一剖析,并提供代码示例便于理解。此外,还介绍了如何遍历HashMap和HashTable。无论是初学者还是进阶开发者,都能从中受益。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
202 3
|
2月前
|
Oracle Java 关系型数据库
掌握Java Stream API:高效集合处理的利器
掌握Java Stream API:高效集合处理的利器
340 80
|
2月前
|
安全 Java API
Java 8 Stream API:高效集合处理的利器
Java 8 Stream API:高效集合处理的利器
231 83
|
11天前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
1月前
|
存储 缓存 安全
Java集合框架(二):Set接口与哈希表原理
本文深入解析Java中Set集合的工作原理及其实现机制,涵盖HashSet、LinkedHashSet和TreeSet三大实现类。从Set接口的特性出发,对比List理解去重机制,并详解哈希表原理、hashCode与equals方法的作用。进一步剖析HashSet的底层HashMap实现、LinkedHashSet的双向链表维护顺序特性,以及TreeSet基于红黑树的排序功能。文章还包含性能对比、自定义对象去重、集合运算实战和线程安全方案,帮助读者全面掌握Set的应用与选择策略。
144 23
|
1月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。
|
1月前
|
安全 Java 开发者
Java集合框架:详解Deque接口的栈操作方法全集
理解和掌握这些方法对于实现像浏览器后退功能这样的栈操作来说至关重要,它们能够帮助开发者编写既高效又稳定的应用程序。此外,在多线程环境中想保证线程安全,可以考虑使用ConcurrentLinkedDeque,它是Deque的线程安全版本,尽管它并未直接实现栈操作的方法,但是Deque的接口方法可以相对应地使用。
118 12