zoukankan      html  css  js  c++  java
  • java集合及分类

          主要分为Collection和Map,Collection获取保存的对象引用使用的是索引,我们可以把它们看成是类似数组的类,而Map则是以键值对的方式存储对象,每个对象在Map中存储时都会有一个键值与之对应。Collection是集合类的顶级接口,其直接继承的接口有Set和list。而Collections则是集合类的一个工具类/帮助类其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

    Map:一堆键值对数据,要求每个键值对中的键不能重复

    Map类型容器是通过键值对的方式来保存对象的,有时我们也称之为字典,创建一个Map类型的容器可以使用任何一个实现了Map接口的类。

    Map  map = new HashMap();

    想要向Map中添加数据可以使用put方法,它接受两个参数:键和值。

    map.put("key",10);

    如果想要获取Map中某个键对应的值可以使用get方法。

    map.get("key");

     HashMap
                常用操作
                    增加:put()
                    删除:remove()    clear()
                    修改:put()
                    检索:get()
                    获取元素键集:keySet()
                    获取元素值集:values()
                    迭代
                        foreah
                        iterator
                    判断键是否存在:containsKey()
                    判断值是否存在:containsValue()

    List:一堆有序可重复的数据,可以使用下标进行检索

     list集合与数组的用途非常类似,都是用来存储大量数据的,不同处有两点:

    1、数组长度在使用前必须确定,一旦确定不能改变。而list集合长度可变,无需定义。

    2、数组中必须存放同一类型的数据,list集合集合中可以存放不同类型的数据。

     1 public class ListArray{
     2     public static void main(String[] args) {
     3         System.out.println("请输入学员姓名,并以over作为结束");
     4         Scanner scanner = new Scanner(System.in);
     5         ArrayList list = new ArrayList();
     6         do{
     7             String name = scanner.next();
     8             if(name.equalsIgnoreCase("over"))break;
     9             list.add(name);
    10         }while(true);
    11         System.out.println(list);
    12     }
    13 }

    List集合中存放引用类型可以用强制类型转换获取。

    JDK 1.5前

    list.add(new Integer(10));

    int i = (Integer)list.get(0).intValue();

    JDK  1.5后 java中提供了自动装箱拆箱功能,使用

    list.add(10);

    int i = (Ingeter)list.get(0);

        常用操作:

        列表集合
                2.1、ArrayList:基于数组实现的,检索较快,增加和删除较慢,效率高。
                2.2、LinkedList:基于链表实现的,检索较慢,增加和删除很快。
                2.3、Vector:线程安全的集合,效率低。
                2.4、常用操作
                    添加:add()
                    删除:remove()    clear()
                    修改:set()
                    检索:get()
                    迭代:
                        for(针对下标)
                        foreach
                        iterator
                    判断存在:contains()

              将集合转换成一个数组:toArray()

    List集合重写了toString方法,可以将集合中的元素依次输出。

     1 import java.util.ArrayList;
     2 import java.util.Collection;
     3 import java.util.Iterator;
     4 import java.util.Scanner;
     5 
     6 public class ListArray {
     7     public static void main(String[] args) {
     8         System.out.println("请输入班级学院姓名,并以over作为结束");
     9         Scanner scanner = new Scanner(System.in);
    10         ArrayList list = new ArrayList();
    11         do {
    12             String name = scanner.next();
    13             if (name.equalsIgnoreCase("over"))
    14                 break;
    15             list.add(name);
    16         } while (true);
    17         System.out.println(list);
    19     }
    20 
    21 }

    List集合常用方法

     1 import java.util.ArrayList;
     4 import java.util.Scanner;
     5 
     6 import javax.swing.text.html.HTMLDocument.Iterator;
     7 
     8 public class Demo {
     9     public static Scanner scanner = new Scanner(System.in);
    10 
    11     public static void main(String[] args) {
    12         ArrayList listA = new ArrayList();
    13         ArrayList listB = new ArrayList();
    14         System.out.println("请输入a学员的姓名,输入以over结束");
    15         inputName(listA);
    16         System.out.println("请输入b学员的姓名,输入以over结束");
    17         inputName(listB);
    18 
    19         System.out.println("请输入要查找的学员姓名");
    20         String name = scanner.next();
    21         int pos = listA.indexOf(name);
    22         if (pos == -1) {
    23             System.out.println("没有找到");
    24         } else {
    25             System.out.println("找到了,位置是" + pos);
    26         }
    27         System.out.println("请输入要删除的学院姓名");
    28         String deName = scanner.next();
    29         if (listA.remove(deName)) {
    30             System.out.println("删除成功");
    31         } else {
    32             System.out.println("没有该学员");
    33         }
    34     }
    35 
    36     public static void inputName(ArrayList list) {
    37         do {
    38             String name = scanner.next();
    39             if (name.equalsIgnoreCase("over"))
    40                 break;
    41             list.add(name);
    42         } while (true);
    43     }
    44 }

    Set集合:一堆无序并不重复的数据

     set集合和list集合很多用法是相同的,但是set集合中的元素是无序的,元素也不能重复,set集合中常用类为HashSet

    常用操作
                    添加:add()
                    删除:remove()    clear()
                    修改:add()
                    迭代:
                        foreach
                        iterator
                    判断存在:contains()

                    返回集合中元素的数量:size()

    list集合可以用for循环获得索引来进行。但是set必须要通过迭代器进行。

     1 import java.util.HashSet;
     2 import java.util.Iterator;
     3 
     4 public class SetIterator {
     5     public static void main(String[] args) {
     6         HashSet set = new HashSet();
     7         set.add("a");
     8         set.add("b");
     9         set.add("c");
    10         set.add("d");
    11         Iterator iterator = set.iterator();
    12         while(iterator.hasNext()){
    13             String str = (String) iterator.next();
    14             System.out.println(str);
    15             
    16         }
    17     }
    18 }
  • 相关阅读:
    LeetCode(111) Minimum Depth of Binary Tree
    LeetCode(108) Convert Sorted Array to Binary Search Tree
    LeetCode(106) Construct Binary Tree from Inorder and Postorder Traversal
    LeetCode(105) Construct Binary Tree from Preorder and Inorder Traversal
    LeetCode(99) Recover Binary Search Tree
    【Android】通过经纬度查询城市信息
    【Android】自定义View
    【OpenStack Cinder】Cinder安装时遇到的一些坑
    【积淀】半夜突然有点想法
    【Android】 HttpClient 发送REST请求
  • 原文地址:https://www.cnblogs.com/danwuxinbolg/p/4540598.html
Copyright © 2011-2022 走看看