Java个个人学习笔记08集合框架

Java个个人学习笔记08集合框架

img

​ Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue。

​ 所有集合框架里面的元素都应该是对象,如果需要用非引用类型需要转化成对应的构造器

ArrayList

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CAINmDrq-1637550841550)(ArrayList.png)]

import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化

添加元素到 ArrayList 可以使用 add() 方法

访问 ArrayList 中的元素可以使用 get() 方法

修改 ArrayList 中的元素可以使用 set() 方法

删除 ArrayList 中的元素可以使用 remove() 方法

ArrayList 中的元素数量可以使用 size() 方法

使用 for-each 来迭代:

ArrayList<String> sites = new ArrayList<String>();
for (String i : sites) {
            System.out.println(i);
        }
ArrayList 排序:Collections位于 java.util 包中,提供的 sort() 方法可以对字符或数字列表进行排序。
ArrayList<String> sites = new ArrayList<String>();
Collections.sort(sites);  // 字母排序
for (String i : sites) {
            System.out.println(i);
        }

Java LinkedList

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。

以下情况使用 ArrayList :

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

  • 你需要通过循环迭代来访问列表中的某些元素。

  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

    / 引入 LinkedListimport java.util.LinkedList; 
    
    LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
    
    LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表
    

增删改查方法同ArrayList

Java HashMap

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。

HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。

import java.util.HashMap; // 引入 HashMap 类

HashMap<Integer, String> Sites = new HashMap<Integer, String>();

访问元素

我们可以使用 get(key) 方法来获取 key 对应的 value

删除元素

我们可以使用 remove(key) 方法来删除 key 对应的键值对(key-value)

计算大小

如果要计算 HashMap 中的元素数量可以使用 size() 方法

迭代 HashMap:

import java.util.HashMap;

public class RunoobTest {
    public static void main(String[] args) {
        // 创建 HashMap 对象 Sites
        HashMap<Integer, String> Sites = new HashMap<Integer, String>();
        // 添加键值对
        Sites.put(1, "Google");
        Sites.put(2, "Runoob");
        Sites.put(3, "Taobao");
        Sites.put(4, "Zhihu");
        // 输出 key 和 value
        for (Integer i : Sites.keySet()) {
            System.out.println("key: " + i + " value: " + Sites.get(i));
        }
        // 返回所有 value 值
        for(String value: Sites.values()) {
          // 输出每一个value
          System.out.print(value + ", ");
        }
    }
}

Java HashSet

HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。

import java.util.HashSet; // 引入 HashSet 类

HashSet<String> sites = new HashSet<String>();

添加元素

HashSet 类提供类很多有用的方法,添加元素可以使用 add() 方法:

判断元素是否存在

我们可以使用 contains() 方法来判断元素是否存在于集合当中

删除元素

我们可以使用 remove() 方法来删除集合中的元素

Java Iterator(迭代器)

Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList ,HashMap等集合

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

ArrayList<String> sites = new ArrayList<String>();
 // 获取迭代器
Iterator<String> it = sites.iterator();
// 输出集合中的第一个元素
System.out.println(it.next());

循环:

while(it.hasNext()) {
    System.out.println(it.next());
}

forEach循环就是为了让用iterator循环访问的形式简单(对集合框架的for-each也是由iterator实现),写起来更方便。但如有删除操作,还是要用iterator,for循环中调用remove会导致下标错误

比较自己构造的类的两种方式:

import java.util.*;

public class Main {

    static class complex  {
        int a = 0;
        int b = 0;
        public complex(int a, int b) {
            this.a = a;
            this.b = b;
        }
    }

    //继承Comparable接口实现比较
    static class complex2 implements Comparable {
        int a = 0;
        int b = 0;
        public complex2(int a, int b) {
            this.a = a;
            this.b = b;
        }

        @Override
        public int compareTo(Object o) {
            complex2 c2 = (complex2)o;
            return this.a - c2.a;
        }
    }

    //写一个构造器compa实现比较
    static class compa implements Comparator<complex>{
        @Override
        public int compare(complex o1, complex o2) {
            return o1.a > o2.a ? 1 : -1;
        }
    }
    public static void main(String[] args) {
        complex complex1 = new complex(3,-2);
        complex complex2 = new complex(2,-1);
        ArrayList<complex> arrayListc = new ArrayList();
        arrayListc.add(complex1);
        arrayListc.add(complex2);
        Collections.sort(arrayListc,new compa());

        complex2 complex3 = new complex2(5,-2);
        complex2 complex4 = new complex2(4,-1);
        ArrayList<complex2> arrayListc2 = new ArrayList();
        arrayListc2.add(complex3);
        arrayListc2.add(complex4);
        Collections.sort(arrayListc2);


        for (complex a:arrayListc
             ) {
            System.out.println(a.a+" "+a.b);
        }
        for (complex2 a:arrayListc2
        ) {
            System.out.println(a.a+" "+a.b);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值