• java中的集合类学习(三)


    
    

    JAVA中有许多的集合,常用的有List,Set,Queue,Map。

    
    

    1、其中List,Set,Queue都是Collection(集合),其每个元素都是单独的一个对象,如List<String>,Set<Integer>等,String和Integer就是单独的一个对象。

    
    

    2、而Map是一种图,其每个元素都是两个对象的一一对应,如Map<Integer, String>中的Integer是键 (key),String是这个键所对应的值(value)。每个元素都是一对Integer和String





    一、
    Map接口

    package
    Demo2; /* * 总结 Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。 集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。 集合框架的类和接口均在java.util包中。 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。 */ import java.util.*; public class Test5{ public static void main(String[] args) { Map<String, String> map = new HashMap<String,String>(); map.put("1", "hello");//添加 for (String key : map.keySet()) { System.out.println("key= "+ key + " and value= " + map.get(key)); } //第二种 System.out.println("通过Map.entrySet使用iterator遍历key和value:"); Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第三种:推荐,尤其是容量大时 System.out.println("通过Map.entrySet遍历key和value"); for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue()); } //第四种 System.out.println("通过Map.values()遍历所有的value,但不能遍历key"); for (String v : map.values()) { System.out.println("value= " + v); } } }

    二、ArrayList、LinkedList

    package Demo2;
    
    /*
     * 
     *以下情况使用 ArrayList :
        频繁访问列表中的某一个元素。
        只需要在列表末尾进行添加和删除元素操作。
      以下情况使用 LinkedList :
        你需要通过循环迭代来访问列表中的某些元素。
        需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
     */
    import java.util.ArrayList;
    import java.util.LinkedList;
    import java.util.Collections;
    public class RunoobTest{
        public static void main(String[]args) {
               
            
               //ArrayList
               ArrayList<String> sites  = new ArrayList<String>();
               ArrayList<Integer> sites2  = new ArrayList<Integer>();
               sites.add("runoob");
               sites.add("333");
               sites.remove(2);
               
                Collections.sort(sites);  // 字母排序
                for (String i : sites) {
                    System.out.println(i);
                }
                
                
                //LinkedList
                LinkedList<String> sites3 = new LinkedList<String>();
                sites3.add("Google");
                sites3.removeLast();
                sites3.addLast("Wiki");
                // 使用 getFirst() 获取头部元素
                sites3.getFirst();
                
                for (int size = sites.size(), i = 0; i < size; i++) {
                    System.out.println(sites.get(i));
                }
                
                //or for-each
                
                for (String i : sites) {
                    System.out.println(i);
                }
                
    
               
        } 
        
    }

    三、HashSet、HashMap

    package Demo2;
    
    import java.util.HashMap;
    import java.util.HashSet;
    
    
    public class Test7{
           public static void main(String[]args) {
               
               /*
                * HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。
                   
                   HashSet 允许有 null 值。
                   
                   HashSet 是无序的,即不会记录插入的顺序。
                   
                   HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。
                * /
                */
               HashSet<String> sites = new HashSet<String>();
               sites.add("Google");
               sites.add("Runoob");
               sites.add("Runoob");  // 重复的元素不会被添加
               sites.remove("assss");// 删除元素,删除成功返回 true,否则为 false
               System.out.println(sites.contains("Taobao"));// contains() 方法来判断元素是否存在于集合当中:
               
               sites.clear();//删除集合中所有元素可以使用 clear 方法
               System.out.println(sites.size());  
               
               /*
                *   HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
    
                    HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
                    
                    HashMap 是无序的,即不会记录插入的顺序。
                    
                    HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口
                */
               
                // 创建 HashMap 对象 Sites
                HashMap<Integer, String> Sites = new HashMap<Integer, String>();
                // 添加键值对
                Sites.put(1, "Google");
                Sites.put(2, "Runoob");
                
                HashMap<String, String> Sites2 = new HashMap<String, String>();
                // 添加键值对
                Sites2.put("one", "Google");
                
                System.out.println(Sites.get(3));
                Sites.remove(4);
                Sites.clear();
    
           }
    }

    四、迭代器-Iterator

    package Demo2;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    /*
     * java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。
       Iterator 是 Java 迭代器最简单的实现,ListIterator 是 Collection API 中的接口, 它扩展了 Iterator 接口。 
       迭代器 it 的两个基本操作是 next 、hasNext 和 remove。
       调用 it.next() 会返回迭代器的下一个元素,并且更新迭代器的状态。
       调用 it.hasNext() 用于检测集合中是否还有元素。
       调用 it.remove() 将迭代器返回的元素删除。
     */
    public class RunoobTest2{
        public static void main(String[]args) {
            // 创建集合
            ArrayList<String> sites = new ArrayList<String>();
            sites.add("Google");
            sites.add("Runoob");
            sites.add("Taobao");
            sites.add("Zhihu");
    
            // 获取迭代器
            Iterator<String> it = sites.iterator();
    
            // 输出集合中的第一个元素
            System.out.println(it.next());
            
            //循环集合元素
            while(it.hasNext()) {
                System.out.println(it.next());
            }
            
            ArrayList<Integer> numbers = new ArrayList<Integer>();
            Iterator<Integer> it2 = numbers.iterator();
            while(it.hasNext()) {
                Integer i = it2.next();
                if(i < 10) {  
                    it.remove();  // 删除小于 10 的元素
                }
            }
        }
    }
    心有猛虎,细嗅蔷薇
  • 相关阅读:
    Minimum configuration for openldap to proxy multiple AD into a single search base
    排列组合算法(PHP)
    Make Notepad++ auto close HTML/XML tags after the slash(the Dreamweaver way)
    PHP, LDAPS and Apache
    【day1】tensorflow版本问题及初步使用
    tflearn save模型异常
    布隆过滤器(Bloom Filter)
    初识Spark(Spark系列)
    Hadoop实践
    install postgis(2.0) on ubuntu(12.04)
  • 原文地址:https://www.cnblogs.com/1314520xh/p/14396952.html
Copyright © 2020-2023  润新知