zoukankan      html  css  js  c++  java
  • 集合框架(六)

    1.集合框架
            Collection           Map
           List   Set          HashMap
      ArrayList   LinkesList         HashSet


    2.List的方法
      List <元素类型> list=new ArrayList<元素类型>();
      list.add(元素); //添加元素
      list.add(index,元素); //向指定的位置插入元素
      list.remover(下标); //删除指定下标的元素
      list.remover(元素); //删除指定元素
      list.get(index); //获取指定下标的元素
      list.contains(元素); //集合中是否包含指定元素

    运行结果:

     1 package Day13七;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Collection;
     5 import java.util.List;
     6 
     7 public class Test1 {
     8     public static void main(String[] args) {
     9         //可重复,有序(不唯一,有序)
    10         List<String> list=new ArrayList<String>();
    11         list.add("aaa");
    12         list.add("bbb");
    13         list.add("aaa");
    14         //向指定位置,插入元素
    15         list.add(1,"ccc");
    16         //获得指定位置元素的值
    17         String val=list.get(0);
    18         //删除指定位置值(返回删除掉的值)
    19         String val1=list.remove(1);
    20         //是否包含指定元素
    21         boolean flag=list.contains("bbb");
    22         
    23         System.out.println(val);
    24         System.out.println(list);
    25         System.out.println(flag);
    26     }
    27 }
    代码示例


    3.Collection,List,Set的区别
      Collection:不唯一,无序
      List:不唯一,有序
      Set:唯一,无序


    4.ArrayList和LinkedList的区别
      a.都实现了List
      b.ArrayList是可变长数组方式实现,查询效率高
        LinkedList是链表方式实现,增加和删除效率高


    5.List常用方法
      List<Object> list=new ArrayList<Object>();
      list.add(obj); //添加元素
      list.get(key); //获取指定key元素
      list.size(); //长度
      list.remover(obj); //删除指定元素
      list.containKey(key); //是否包含指定key


    6.Map常用方法(键值对方式存储数据)
      Map<Object,Object> maps=new HashMap<Object,Object>();
      maps.put(key,value); //增加元素
      maps.get(key); //获取指定key的值
      maps.size(); //长度
      maps.remove(key); //删除指定元素
      maps.containsKey(key); //是否包含指定key
      注意:key是唯一的,如果重复那么后面的会覆盖前面的
        value是可以重复的

    运行结果:

     1 package Day13七;
     2 
     3 public class Penguin extends Pet{
     4     String name="无名氏";        //昵称
     5     String sex="Q仔";            //性别
     6     
     7     public Penguin() {
     8 
     9     }
    10     public Penguin(String name,String sex){
    11         this.name=name;
    12         this.sex=sex;
    13     }
    14     
    15     /**
    16      * 输出企鹅的信息
    17      */
    18     public void print(){
    19         System.out.println("宠物的自白:
    我的名字叫"+this.name+",性别是"+this.sex+"。");
    20     }
    21 
    22     public String getName() {
    23         return name;
    24     }
    25 
    26     public void setName(String name) {
    27         this.name = name;
    28     }
    29 
    30     public String getSex() {
    31         return sex;
    32     }
    33 
    34     public void setSex(String sex) {
    35         this.sex = sex;
    36     }
    37     @Override
    38     public String toString() {
    39         return sex+" "+getName();
    40     }
    41     
    42 }
    企鹅类
     1 package Day13七;
     2 
     3 public class Pet {
     4     private int age;                    //年龄
     5     private String name;                //昵称
     6     private int health;                    //健康值
     7     private int love;                    //亲密度
     8     public Pet() {
     9         
    10     }
    11     //打印信息
    12     public void print(){
    13         System.out.println("名字:"+this.name+",年龄:"+this.age+",健康值:"+this.health+",亲密度:"+this.love);
    14     }
    15     
    16     public int getAge() {
    17         return age;
    18     }
    19     public void setAge(int age) {
    20         this.age = age;
    21     }
    22     public String getName() {
    23         return name;
    24     }
    25     public void setName(String name) {
    26         this.name = name;
    27     }
    28     public int getHealth() {
    29         return health;
    30     }
    31     public void setHealth(int health) {
    32         this.health = health;
    33     }
    34     public int getLove() {
    35         return love;
    36     }
    37     public void setLove(int love) {
    38         this.love = love;
    39     }
    40     
    41 }
    父类
     1 package Day13七;
     2 
     3 import java.util.HashMap;
     4 import java.util.Map;
     5 
     6 public class TestMap {
     7     public static void main(String[] args) {
     8         //key--->value
     9         //名字-->企鹅
    10         Map<String,Penguin> maps=new HashMap<String,Penguin>();
    11         //增加
    12         Penguin p=new Penguin();
    13         p.setName("欧欧");
    14         p.setSex("男");
    15         maps.put("欧欧", p);
    16         
    17         Penguin p1=new Penguin();
    18         p1.setName("灰灰");
    19         p1.setSex("男");
    20         maps.put("灰灰", p1);
    21         
    22         //取值
    23         //maps.get(key)
    24         Penguin p2=maps.get("欧欧");
    25         p2.print();
    26         
    27         //大小
    28         System.out.println(maps.size());
    29         //是否包含key
    30         System.out.println(maps.containsKey("欧欧"));
    31         //删除
    32         maps.remove("欧欧");
    33         
    34         System.out.println(maps);
    35     }
    36 }
    测试类


    7.vector和ArrayList的异同
      实现原、功能相同,可以互用
      主要区别
        vector线程安全,ArrayList重速度轻安全,线程非安全
        长度需增长时,vector默认增长一倍,ArrayList增长50%


    8.Hashtable和HashMap异同
      实现原、功能相同,可以互用
      主要区别
        Hashtable继承Dictionary类,HashMap实现Map接口
        Hashtable线程安全,HashMap线程非安全
        Hashtable不允许null值,HashMap允许null值

    线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,
    是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同
    时运行多个线程完成不同的工作,称为多线程。
    单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。
    单线程就是进程只有一个线程
    多线程就是进程有多个线程

    9.集合的迭代
      语法:Iterator<Object> it=集合.iterator();
        while(it.hasNext()){
          Object obj=it.next();
        }
        is.hasNext(); //判断是否有下一个元素
        it.next(); //移动指针,返回指针指向元素
      注意:集合在遍历的过程中不能进行修改,如果进行了修改操作,那么就会抛出ConcurrentModificationException异常,
          如果需要进行删除,使用迭代器的it.remove()方法

    运行结果:

     1 package Day13七;
     2 
     3 import java.util.Collection;
     4 import java.util.HashMap;
     5 import java.util.Iterator;
     6 import java.util.Map;
     7 import java.util.Set;
     8 
     9 public class Test5 {
    10     public static void main(String[] args) {
    11         Map<String,String> maps=new HashMap<String,String>();
    12         maps.put("a", "A");
    13         maps.put("b", "B");
    14         maps.put("c", "C");
    15         
    16         //Iterator迭代器
    17         Iterator<String> it=maps.keySet().iterator();
    18         //hasNext:判断下一个是否有值
    19         while(it.hasNext()){
    20             //移动下标,并返回当前值
    21             String str=it.next();        //取key
    22             System.out.println(str); 
    23             if(str.equals("a")){
    24                 it.remove();
    25             }
    26             System.out.println(str);
    27         }
    28         
    29         //Iterator迭代器
    30         Iterator<String> its=maps.values().iterator();
    31         //hasNext:判断下一个是否有值
    32         while(its.hasNext()){
    33             //移动下标,并返回当前值
    34             String str1=its.next();        //取values
    35             System.out.println(str1);
    36         }
    37     }
    38 }
    代码示例
  • 相关阅读:
    hdu 1426 Sudoku Killer
    hdu 1426 Sudoku Killer
    hdu 1372 Knight Moves
    hdu 1372 Knight Moves
    在 MySQL 中查找含有目标字段的表
    又一次编译无效数据库组件
    POJ 3468 A Simple Problem with Integers(线段树功能:区间加减区间求和)
    CodeForces 42C Safe cracking 规律题
    博客搬家啦!!!!!!!!!!!!!!!!!!!!!!!!
    DML语句报错是因为控制文件无法扩大还是另有原因?
  • 原文地址:https://www.cnblogs.com/yang82/p/7073169.html
Copyright © 2011-2022 走看看