日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java集合

 印度阿三17 2019-04-20

1概念具

集合Java的集合是工具類(lèi),可以存儲(chǔ)任意數(shù)量的具有共同屬性的對(duì)象。

2體系結(jié)構(gòu)(分為2類(lèi)一類(lèi)為Collection一類(lèi)為Map)

?

1Collection

?

1List

是元素有序并且可以重復(fù)的序列并且可以重復(fù)的集合

可以精確的控制每個(gè)元素的插入位置,或者刪除某個(gè)位置

主要有兩個(gè)類(lèi)ArrayList和LinkedList

ArrayList

底層是由數(shù)組實(shí)現(xiàn)的

動(dòng)態(tài)增長(zhǎng),以滿足應(yīng)用程序的需求

?

?

在列表尾部插入或者刪除數(shù)據(jù)非常有效

更適合查找和更新元素

ArrayList可以為Null;

在ArrayList添加數(shù)據(jù),刪除數(shù)據(jù),和輸出數(shù)據(jù)

package com.jiedada.arraylist;


import java.util.ArrayList;
import java.util.List;

public class ArrayListOne {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //創(chuàng)建一個(gè)ArrayList并且添加數(shù)據(jù)
        List list=new ArrayList();
        list.add("java");
        list.add("C  ");
        list.add("GO");
        list.add("C");
        list.add("swit");
        //輸出結(jié)果
        for(int i=0;i<list.size();i  )
        {
            System.out.print(list.get(i) " ");
        }
        //刪除GO
        System.out.println("**************************");
        list.remove(2);
        for(int i=0;i<list.size();i  )
        {
            System.out.print(list.get(i) " ");
        }
    }

}
View Code

?公告通知實(shí)列

1公告添加和顯示

2在指定位置插入公告

3刪除公告

4顯示公告

注意:Data方法是JAVA中自帶的方法,我們使用的時(shí)間函數(shù)在uitl中

在ArrayList中數(shù)組的長(zhǎng)度方法為.size,刪除方法為remove;set為修改數(shù)據(jù);set不能更改ArrayList的長(zhǎng)度;

創(chuàng)建廣告類(lèi)

package com.jiedada.arraylist;

import java.util.Date;

public class Notice {
    private int id;
    private String name;
    private Date date;
    private String title;
    public Notice(int id, String name, Date date, String title) {
        super();
        this.id = id;
        this.name = name;
        this.date = date;
        this.title = title;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    

}
View Code

?

對(duì)廣告類(lèi)進(jìn)行改動(dòng)

package com.jiedada.arraylist;

import java.util.ArrayList;
import java.util.Date;

public class NoticeTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
     //創(chuàng)建Notice類(lèi),生成公告
        Notice notice1=new Notice(1, "jiedada",new Date(),"歡迎來(lái)到杰大大這里");
        Notice notice2=new Notice(2, "jiedada",new Date(),"不準(zhǔn)玩網(wǎng)絡(luò)游戲");
        Notice notice3=new Notice(3, "jiedada",new Date(),"不能在電腦上亂動(dòng)?xùn)|西哦");
    //添加公告
        ArrayList noticelist=new ArrayList();
        noticelist.add(notice1);
        noticelist.add(notice2);
        noticelist.add(notice3);
        //顯示內(nèi)容
        for(int i=0;i<noticelist.size();i  )
        {
            System.out.println(((Notice)(noticelist.get(i))).getTitle());
        }
        System.out.println("**************************");
        //在公告中添加一個(gè)杰是大帥哥
        Notice notice4=new Notice(4, "jiedadadexiaomimei",new Date(), "杰是大帥哥");
        noticelist.add(notice4);
        for(int i=0;i<noticelist.size();i  )
        {
            System.out.println(((Notice)(noticelist.get(i))).getTitle());
        }
        System.out.println("**************************");
        //刪除數(shù)據(jù)
        noticelist.remove(3);
        for(int i=0;i<noticelist.size();i  )
        {
            System.out.println(((Notice)(noticelist.get(i))).getTitle());
        }
        System.out.println("**************************");
        //修改數(shù)據(jù)
        notice2.setTitle("杰大大不在的時(shí)候不準(zhǔn)玩游戲");
        noticelist.set(1,notice2);
        for(int i=0;i<noticelist.size();i  )
        {
            System.out.println(((Notice)(noticelist.get(i))).getTitle());
        }
    }

}
View Code

?

?

?

2Queue

3Set

?是元素?zé)o序并且不重復(fù)的集合。

HashSet

是Set的重要實(shí)現(xiàn)類(lèi),叫哈希集

HashSet的元素?zé)o序并且不重復(fù)

HashSet中只允許一個(gè)null

具有良好的查找和存儲(chǔ)功能

在這個(gè)類(lèi)中沒(méi)有g(shù)et()方法需要使用迭代器

迭代器是一個(gè)接口也是在uitl中的,迭代器每次使用的時(shí)候最好在定義一次;

在迭代器中.next()方法中用用到向下轉(zhuǎn)型,這樣很容易出錯(cuò),我們不知道。next()方法中是不是全部都是這樣的類(lèi)型的類(lèi);

所以我們引入泛型,在定義的時(shí)候這樣定義Set<Cat> set=new HashSet<Cat>();

有hasNext()方法檢測(cè)集合中是否還有元素;

next()返回集合中的下一個(gè)元素;

代碼如下

package com.jiedada.arraylist;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class hashhanshu {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //添加顏色
      Set set=new HashSet();
     set.add("blue");
     set.add("red");
     set.add("yellow");
     set.add("wilte");
     set.add("green");
    
//用迭代器進(jìn)行輸出
     Iterator it=set.iterator();
     while(it.hasNext())
     {
         System.out.print(it.next() " ");
     }
     System.out.println("**************************");
     //添加wilte
     set.add("wilte");
     it=set.iterator();
     while(it.hasNext())
     {
         System.out.print(it.next() " ");
     }
     System.out.println("**************************");
    }      
}
View Code

?在添加相同屬性時(shí),HashSet不會(huì)自動(dòng)判斷需要重寫(xiě)HashCode和equles方法;

什么是哈希表:通過(guò)特定的規(guī)則把數(shù)據(jù)分為幾份,在在數(shù)據(jù)中找到我們需要的數(shù)據(jù);

如通過(guò)n%3分為3分,0為一份,1為一份,2為一份;

Cat的方法

package com.jiedada.arraylist;

public class Cat {
   String name;
   int mouth;
   String speice;
public Cat(String name, int mouth, String speice) {
    super();
    this.name = name;
    this.mouth = mouth;
    this.speice = speice;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getMouth() {
    return mouth;
}
public void setMouth(int mouth) {
    this.mouth = mouth;
}
public String getSpeice() {
    return speice;
}
public void setSpeice(String speice) {
    this.speice = speice;
}
@Override
public String toString() {
    return "Cat [name="   name   ", mouth="   mouth   ", speice="   speice   "]";
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result   mouth;
    result = prime * result   ((name == null) ? 0 : name.hashCode());
    result = prime * result   ((speice == null) ? 0 : speice.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if(this==obj)
    {
        return false;
    }
    if(obj.getClass()==Cat.class)
    {
        Cat cat=(Cat)obj;
        return cat.getName().equals(name)&&(cat.getMouth()==mouth)&&cat.getSpeice().equals(speice);
    }
    return true;
}
   
}
View Code

test的方法

package com.jiedada.arraylist;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CatTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
     Cat huahua=new Cat("花花",12,"英國(guó)貓");
     Cat fanfan=new Cat("凡凡",3,"中國(guó)田園貓");
        Set set=new HashSet();
        set.add(huahua);
        set.add(fanfan);
        Iterator it=set.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        }
        System.out.println("**************");
        //添加屬性
        Cat cat=new Cat("花花",12,"英國(guó)貓");
        set.add(cat);
        it=set.iterator();
        System.out.println("改變后的結(jié)果");
        while(it.hasNext())
        {
            System.out.println(it.next());
        }
    }

}
View Code

?上面的所有增,刪,改,查的代碼

package com.jiedada.arraylist;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class CatTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
     Cat huahua=new Cat("花花",12,"英國(guó)貓");
     Cat fanfan=new Cat("凡凡",3,"中國(guó)田園貓");
        Set<Cat> set=new HashSet<Cat>();
        set.add(huahua);
        set.add(fanfan);
        Iterator<Cat> it=set.iterator();
        while(it.hasNext())
        {
            System.out.println(it.next());
        }
        System.out.println("**************");
        //添加屬性
         System.out.println("*****************");
        Cat cat=new Cat("花花",12,"英國(guó)貓");
        set.add(cat);
        it=set.iterator();
        System.out.println("改變后的結(jié)果");
        while(it.hasNext())
        {
            System.out.println(it.next());
        }
        Cat huahua2=new Cat("花花2",1,"英國(guó)貓");
        //通過(guò)對(duì)想找到元素
        System.out.println("*****************");
        set.add(huahua2);
        if(set.contains(huahua))
        {
            System.out.println("找到了花花!");
            System.out.println(huahua);
        }
        else
        {
            System.out.println("沒(méi)有找到");
        }
        //通過(guò)名字找到元素
        System.out.println("*****************");
        Cat cat1=new Cat();
        boolean flag=false;
        it=set.iterator();
        while(it.hasNext())
        {
            cat1=(Cat)it.next();
            if(cat1.getName()=="花花")
            {
                flag=true;
                break;
            }
        }
        if(flag)
        {
            System.out.println("找到了花花!");
            System.out.println(cat1);
        }
        else
        {
            System.out.println("沒(méi)有找到!");
        }
        System.out.println("*****************");
        //刪除花花的數(shù)據(jù)并且用增強(qiáng)型FOR循環(huán)
       /* for(Cat cat2:set)
        {
            if(cat2.getName().equals("花花"))
            {
                set.remove(cat2);
            break;
            }
        }*/
        //刪除多個(gè)數(shù)據(jù)的方法;
        Set<Cat> set1=new HashSet<Cat>();
        for(Cat cat2:set)
        {
            if(cat2.getMouth()<5)
            {
                set1.add(cat2);
            }
        }
        set.removeAll(set1);
        for(Cat cat2:set)
        {
            System.out.println(cat2);
        }
        System.out.println("*****************");
        //刪除所有數(shù)據(jù)
        boolean flag1=set.removeAll(set);
        if(set.isEmpty())
        {
            System.out.println("沒(méi)有數(shù)據(jù)了!");
        }
        else
        {
            System.out.println("還有數(shù)據(jù)");
        }
    }

}
View Code

?

Map

map中的數(shù)據(jù)是以鍵值對(duì)(key-value)的形式儲(chǔ)存的

key-value以Entry類(lèi)型的對(duì)象實(shí)例存在

可以通過(guò)key值快速查找value

一個(gè)映射不能包含重復(fù)的鍵:一個(gè)key只能對(duì)應(yīng)一個(gè)value,但是一個(gè)value可以對(duì)應(yīng)多個(gè)key

HashMap

基于哈希表的Map接口的實(shí)現(xiàn)

允許使用null值和null鍵

key值不允許重復(fù)

HashMap中的Entry對(duì)象是無(wú)序排列的

實(shí)現(xiàn)一個(gè)字典的添加和輸出數(shù)據(jù);

通過(guò)對(duì)象.put輸入數(shù)據(jù)

再通過(guò)把key和values的值通過(guò)對(duì)象.entrySet()存入Set<Entry<String,String>>的方法

package com.jiedada.arraylist;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class Dictionliry {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map<String,String> animal=new HashMap<String,String>();
        Scanner console=new Scanner(System.in);
        int i=0;
        //添加key和value的值
        while(i<3)
        {
            System.out.println("請(qǐng)輸入key(單詞)的值");
            String key=console.next();
            System.out.println("請(qǐng)輸入value(注釋?zhuān)┑闹?quot;);
            String value=console.next();
            animal.put(key, value);
            i  ;
        }
        //通過(guò)迭代器的方法輸出value的值
        Iterator<String> it=animal.values().iterator();
        System.out.println("迭代器輸出values:");
        while(it.hasNext())
        {
            System.out.print(it.next() " ");
        }
        System.out.println();
        System.out.println("*******************");
        //輸出key和values
       Set<Entry<String, String>> set=animal.entrySet();
        for(Entry<String, String> a:set)
        {
            System.out.print(a.getKey() "-");
            System.out.println(a.getValue());
        }
    }

}
View Code

完整的貨物存儲(chǔ)代碼

Goods代碼

package com.jiedada.arraylist;

public class Goods {
  private String id;
  private String name;
  private int price;
public Goods(String id, String name, int price) {
    super();
    this.id = id;
    this.name = name;
    this.price = price;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public int getPrice() {
    return price;
}
public void setPrice(int price) {
    this.price = price;
}
@Override
public String toString() {
    return "Goods [id="   id   ", name="   name   ", price="   price   "]";
}
  
}
View Code

?

Goodstest

package com.jiedada.arraylist;

import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class GoodsTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Map<String,Goods> goodsMap=new HashMap<String,Goods>();
        System.out.println("請(qǐng)輸入三天信息:");
        Scanner console=new Scanner(System.in);
        //錄入信息
        int i=0;
        while(i<3)
        {
            System.out.println("請(qǐng)輸入商品編號(hào):");
            String id=console.next();
            if(goodsMap.containsKey(id))
            {
                System.out.println("商品名稱(chēng)重復(fù),請(qǐng)?jiān)诖溯斎?quot;);
                continue;
            }
            System.out.println("請(qǐng)輸入商品名字:");
            String name=console.next();
            int price;
            try {
            System.out.println("請(qǐng)輸入商品價(jià)格:");
            price=console.nextInt();
            }catch(java.util.InputMismatchException e)
            {
                System.out.println("價(jià)格為整數(shù)請(qǐng)重新輸入數(shù)字");
                console.next();
                continue;
            }
            Goods goods=new Goods(id,name,price);
            //把值輸入其中
            goodsMap.put(id, goods);
            i  ;
        }
        //遍歷找出
        Iterator<Goods> it=goodsMap.values().iterator();
        while(it.hasNext()) {
        System.out.println(it.next());
    }
        //輸出values和key的數(shù)據(jù)
        
    }
}
View Code

?

3實(shí)際應(yīng)用

1無(wú)法預(yù)測(cè)存儲(chǔ)數(shù)據(jù)的數(shù)量

2同時(shí)存儲(chǔ)具有一對(duì)一關(guān)系的數(shù)據(jù)

3需要進(jìn)行數(shù)據(jù)的增刪

4數(shù)據(jù)重復(fù)問(wèn)題

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多