• 集合总结(Java)


     Collection

    常用方法
    1. package com.test01;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. /*
    5. 添加元素---boolean add(E e);
    6. 移除元素---boolean remove(Object c);
    7. 判断元素是否存在---boolean contains(Object c);
    8. */
    9. public class S {
    10. public static void main(String[] args) {
    11. // 创建Collectiom的对象
    12. Collection s = new ArrayList<>();
    13. // 添加元素---boolean add(E e);
    14. s.add("Hello");
    15. s.add("world");
    16. // 重写toString()方法
    17. System.out.println(s);
    18. // 移除元素---boolean remove(Object c);
    19. s.remove("Hello");
    20. System.out.println(s);
    21. // 判断元素是否存在---boolean contains(Object c);
    22. System.out.println(s.contains("world"));
    23. // 判断集合是否为空 boolean isEmpty();
    24. System.out.println(s.isEmpty());
    25. // 返回长度---int size();
    26. System.out.println(s.size());
    27. // 清空元素---void claer();
    28. s.clear();
    29. }
    30. }
    遍历方法
    1. package com.test01;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. import java.util.Iterator;
    5. public class S {
    6. public static void main(String[] args) {
    7. // 创建Collection的对象
    8. Collection s = new ArrayList<>();
    9. s.add("1");
    10. s.add("2");
    11. s.add("3");
    12. // 返回集合中元素的迭代器,通过集合中iterator()方法得到
    13. Iterator it = s.iterator();
    14. // 通用遍历方法
    15. // boolean hasNext()----如果集合中有更多的元素,则返回true
    16. // E next()----返回迭代器中的下一个元素
    17. while(it.hasNext()){
    18. String a = it.next();
    19. System.out.println(a);
    20. }
    21. }
    22. }

    List

    常用方法

    遍历与Collection类似//可能会出现并发修改异常

    多了一种遍历方法

    快捷键为list.fori,回车

    1. package com.test01;
    2. import java.util.ArrayList;
    3. import java.util.Collection;
    4. import java.util.Iterator;
    5. import java.util.List;
    6. public class S {
    7. public static void main(String[] args) {
    8. List list = new ArrayList<>();
    9. list.add("1");
    10. list.add("2");
    11. list.add("3");
    12. // void add(int idnex,E c)----在指定索引添加元素
    13. list.add(1,"100");
    14. // 也是重写了toString()方法
    15. System.out.println(list);
    16. // E remove(int x)-----删除指定元素,并返回此元素
    17. System.out.println(list.remove(1));
    18. System.out.println(list);
    19. // E set(int x,E a)----修改指定元素,并返回此元素
    20. System.out.println(list.set(1,"200"));
    21. System.out.println(list);
    22. // E get(int x)----得到指定元素
    23. System.out.println(list.get(2));
    24. for (int i = 0; i < list.size(); i++) {
    25. System.out.println(list.get(i));
    26. }
    27. }
    28. }
    ListIterato:列表迭代器
    1. package com.test01;
    2. import java.util.*;
    3. public class S {
    4. public static void main(String[] args) {
    5. List list = new ArrayList<>();
    6. list.add("1");
    7. list.add("2");
    8. list.add("3");
    9. ListIterator it = list.listIterator();
    10. // //正向,不常用
    11. // while(it.hasNext()){
    12. // System.out.println(it.next());
    13. // }
    14. // System.out.println("----------");
    15. //
    16. // //反向,不常用
    17. // while(it.hasPrevious()){
    18. // System.out.println(it.previous());
    19. // }
    20. //
    21. // System.out.println("--------");
    22. //add()方法,重点掌握
    23. while(it.hasNext()){
    24. String s = it.next();
    25. if(s.equals("2")){
    26. it.add("10");
    27. }
    28. }
    29. System.out.println(list);
    30. }
    31. }
    增强for
    1. public class S {
    2. public static void main(String[] args) {
    3. List list = new ArrayList<>();
    4. list.add("1");
    5. list.add("2");
    6. list.add("4");
    7. for(String i : list){
    8. System.out.println(i);
    9. }
    10. }
    11. }
    ArrayList----底层是数组
    LinkedList
    LinkedList---底层是链表
    1. public class dome {
    2. public static void main(String[] args) {
    3. LinkedList linkedList = new LinkedList<>();
    4. //boolean addFirst(E e)在头加入元素,removeFirst()同理,getFirst()
    5. linkedList.addFirst("1");
    6. //在尾加入元素,removeLast()同理,getLast()
    7. linkedList.addLast("3");
    8. for(String it : linkedList){
    9. System.out.println(it);
    10. }
    11. }
    12. }

    HashSet

    需要重写hascode()

    底层是哈希表

    3种遍历不能用普通循环

    不保证存储和输出顺序一致

    LinkedKist
    1. /*
    2. 存储和输出顺序一致
    3. 保证唯一性
    4. */
    5. public class S {
    6. public static void main(String[] args) {
    7. LinkedHashSet linkedHashSet = new LinkedHashSet<>();
    8. linkedHashSet.add("1");
    9. linkedHashSet.add("2");
    10. linkedHashSet.add("3");
    11. linkedHashSet.add("3");
    12. for(String it : linkedHashSet){
    13. System.out.println(it);
    14. }
    15. }
    16. }
    TreeSet
    1. /*
    2. 元素有序,这里的有序是按照一定的规则进行排序,取决于构造方法,默认根据自然元素进行排序
    3. 不能用普通for
    4. 元素具有唯一性
    5. */
    6. public class S {
    7. public static void main(String[] args) {
    8. TreeSet integers = new TreeSet<>();
    9. integers.add(1);
    10. integers.add(2);
    11. integers.add(2);
    12. integers.add(4);
    13. for(Integer it : integers){
    14. System.out.println(it);
    15. }
    16. }
    17. }
     比较器Comparable的使用
    1. public class Student implements Comparable{
    2. private String name;
    3. private int age;
    4. public Student(){
    5. }
    6. public Student(String name,int age){
    7. this.name=name;
    8. this.age=age;
    9. }
    10. public void show(){
    11. System.out.println(name+age+"岁");
    12. }
    13. public String getName() {
    14. return name;
    15. }
    16. public void setName(String name) {
    17. this.name = name;
    18. }
    19. public int getAge() {
    20. return age;
    21. }
    22. public void setAge(int age) {
    23. this.age = age;
    24. }
    25. @Override
    26. public int compareTo(Student o) {
    27. // return 0;不加入
    28. // return 1;加入
    29. // return -1;加前面
    30. int num = this.age-o.age;
    31. int num1 = num==0?this.name.compareTo(o.name):num;
    32. return num1;
    33. }
    34. }
    1. public class dome {
    2. public static void main(String[] args) {
    3. TreeSet treeSet = new TreeSet<>();
    4. /* //可以用这个代替
    5. TreeSet treeSet = new TreeSet<>(new Comparator() {
    6. @Override
    7. public int compare(Student o1, Student o2) {
    8. int num = o1.getAge()-o2.getAge();
    9. int num1 = num==0?o1.getName().compareTo(o2.getName()):num;
    10. return num1;
    11. }
    12. });
    13. */
    14. Student s1 = new Student("lihua",10);
    15. Student s2 = new Student("yaoming",30);
    16. Student s3 = new Student("hh",20);
    17. Student s4 = new Student("hh",20);
    18. treeSet.add(s1);
    19. treeSet.add(s2);
    20. treeSet.add(s3);
    21. treeSet.add(s4);
    22. for(Student it : treeSet){
    23. System.out.println(it.getName()+","+it.getAge());
    24. }
    25. }
    26. }

    Map

    Map基本知识
    1. public class dome {
    2. public static void main(String[] args) {
    3. //创建对象
    4. Map map = new HashMap<>();
    5. //添加功能
    6. map.put("1","wa");//添加元素
    7. map.put("2","rrrr");
    8. map.put("3","weewee");
    9. map.put("2","qqqq");//注意
    10. //获取功能
    11. System.out.println(map.get("1"));//获取值
    12. Set set = map.keySet();//获取所有键
    13. Collection collection = map.values();//获取所有值
    14. System.out.println(map);
    15. //基本方法
    16. System.out.println("-------");
    17. System.out.println(map.remove("2"));//返回值,删除
    18. System.out.println(map.remove("6"));//返回为空
    19. System.out.println(map);
    20. System.out.println("-------------");
    21. System.out.println(map.containsKey("3"));//是否包含此key
    22. System.out.println(map.containsValue("wa"));//是否包含vaul
    23. System.out.println(map.isEmpty());//判断是否为空
    24. System.out.println(map.size());//返回长度
    25. map.clear();//清空map
    26. }
    27. }
    Map的遍历

    1.

    1. public class dome {
    2. public static void main(String[] args) {
    3. Map map = new HashMap<>();
    4. map.put("1","a");
    5. map.put("2","b");
    6. map.put("3","c");
    7. Set set = map.keySet();
    8. for(String it : set){
    9. System.out.println(it+","+map.get(it));
    10. }
    11. }
    12. }

    2.

    1. Set> entries = map.entrySet();
    2. for(Map.Entry ma : entries){
    3. System.out.println(ma.getKey()+","+ma.getValue().getName()+","+ma.getValue().getAge());
    4. }
     ArrayList嵌套HashMap
    1. public class dome {
    2. public static void main(String[] args) {
    3. ArrayList> arrayList = new ArrayList<>();
    4. HashMap map1 = new HashMap<>();
    5. HashMap map2 = new HashMap<>();
    6. map1.put("1","2");
    7. map1.put("2","3");
    8. map2.put("a","b");
    9. map2.put("b","c");
    10. arrayList.add(map1);
    11. arrayList.add(map2);
    12. for(HashMap it : arrayList){
    13. Set set = it.keySet();
    14. for(String me : set){
    15. System.out.println(me+","+it.get(me));
    16. }
    17. }
    18. }
    19. }
    HashMap嵌套ArrayList
    1. public class dome {
    2. public static void main(String[] args) {
    3. HashMap> map = new HashMap<>();
    4. ArrayList arrayList1 = new ArrayList();
    5. arrayList1.add("张三");
    6. arrayList1.add("李四");
    7. map.put("编号:1",arrayList1);
    8. ArrayList arrayList2 = new ArrayList<>();
    9. arrayList2.add("王五");
    10. arrayList2.add("赵六");
    11. map.put("编号:2",arrayList2);
    12. Set>> entries = map.entrySet();
    13. for(Map.Entry> me : entries){
    14. System.out.println(me.getKey());
    15. ArrayList ss = me.getValue();
    16. for(String it : ss){
    17. System.out.println(it);
    18. }
    19. }
    20. }
    21. }
    TreeMap

    是TreeSet与HashMap结合

    Collections

    基本方法
    1. public class dome {
    2. public static void main(String[] args) {
    3. List list = new ArrayList<>();
    4. list.add(12);
    5. list.add(34);
    6. list.add(23);
    7. list.add(78);
    8. //排序
    9. Collections.sort(list);
    10. System.out.println(list);
    11. //反转
    12. Collections.reverse(list);
    13. System.out.println(list);
    14. //随机排序
    15. Collections.shuffle(list);
    16. System.out.println(list);
    17. }
    18. }
     Collections排序
    1. public class dome {
    2. public static void main(String[] args) {
    3. ArrayList arrayList = new ArrayList<>();
    4. Student s1 = new Student("zhangsan",12);
    5. Student s2 = new Student("lisi",12);
    6. Student s3 = new Student("lihua",234);
    7. arrayList.add(s1);
    8. arrayList.add(s2);
    9. arrayList.add(s3);
    10. Collections.sort(arrayList, new Comparator() {//也可用Student重写方法
    11. @Override
    12. public int compare(Student o1, Student o2) {
    13. int num = o1.getAge()-o2.getAge();
    14. int num1 = num==0?o1.getName().compareTo(o2.getName()):num;
    15. return num1;
    16. }
    17. });
    18. for(Student it : arrayList){
    19. System.out.println(it.getName()+","+it.getAge());
    20. }
    21. }
    22. }

  • 相关阅读:
    Dubbo的使用
    nlp之文本转向量
    Redis的缓存雪崩、缓存穿透、缓存击穿
    MySQL数据库管理基本操作(一)
    场景应用:利用Redis实现分布式Session
    ARM指令集--数据处理指令
    销售外勤自动生成日报:每天节省 20 分钟,每年节省 121小时,把更多精力放在客户开发和跟进上
    题解:ABC319C - False Hope
    C语言中各种运算符用法
    汽车网络安全--安全芯片应用场景解析
  • 原文地址:https://blog.csdn.net/weixin_74139128/article/details/134039765