08-17集合

Java中的集合框架层次结构

collection set list map 接口(接口不能new,new的都是实现类)

set list map区别

常用(add()添加、修改 remove()删除 size()长度)

set:无序的(存和取的顺序),不重复(相同的只保留一个)用来去重,(remove时,直接输入字符)

list:有序的(存和取的顺序),数据可以重复(经常用于保存从数据库中查询到的数据)(remove时,使用索引)

map:key-value键值对方式存储的(123456789   object)  

        key 不可以重复(缓存用户数据),value可以重复,

       如果有相同的key ,新的会覆盖旧的

ArratList (常用 查询所有返回到页面) 基于数组 查询比较快

linkedList  基于链表的  她插入,修改,删除较快 模拟栈和队列

           栈(先进后出 压子弹 )    队列(先进先出 单行线)

set的迭代:

1.加强for 2.iterator

加强for,格式for(循环到的每个数据的类型 别名:循环对象)

//1、加强

@Test

public void test05(){

Set stus=new HashSet();

Student cc=new Student(1, "cc", 85);

Student ss=new Student(2, "ss", 80);

stus.add(cc);

stus.add(ss);// for(foreach) //for(循环到的每个数据的类型 别名:循环对象)

for(Object s:stus){

Student a=(Student)s;

System.out.println(a.getName());

}

}

2.iterator                                                            1.获取itertor(迭代器)

@Test                                                                  2. //hasNext判断有没有下一条

public void colle08() {                                           3. //next方法指针下移,取出一条

      Set stus=new HashSet();                               4.//完成迭代

      stus.add(13);

      stus.add(14);

      stus.add(15);

  Iterator i=stus.iterator();  //获取itertor(迭代器)

  while(i.hasNext()){//hasNext判断有没有下一条

Object obj=i.next();  //next方法指针下移,取出一条

//System.out.println(obj);//完成迭代

if((int)obj==15){

i.remove();

}

    }

System.out.println(stus);

    }

contains//判断字符串中是否有指定字符串,返回boolean,true 或false

List list=new ArrayList();

boolean flag=list.contains(zs);

System.out.println(flag);

//HashSet按照哈希码存放,即无序 

 @Test public void colle07() {

 Set stus=new HashSet();

 stus.add("utu"); 

 stus.add(55); 

 stus.add("jhg"); 

 System.out.println(stus); } 

//TreeSet按照自然顺序,数字从小到大,字母从A-Z 

@Test 

 public void colle09() {

 Set stus=new TreeSet(); 

 stus.add("ki"); 

 stus.add("ap"); 

 stus.add("cu");

 System.out.println(stus); }


课堂练习

//使用Set集合,生成1-25之内不重复的7个随机整数

@Test

public void colle10() {

Set s=new HashSet();

while(true) {

int n=new Random().nextInt(25);

s.add(n+1);

if(s.size()==7){

break;

}

}System.out.println(s);

}

}

//假设顺序列表ArrayList中存储的元素是整型数字1~5(通过循环放置数据), //(用foreach和iterator两种方式)遍历每个元素,将每个元素顺序输出。

@Test public void list11(){

Lista=new ArrayList();

for(int i=1;i<=5;i++){//for加强(foreach) 

a.add(i); }

for(Integer i:a){

System.out.println(i); }

System.out.println("-----------");

Iterator s =a.iterator();    //获取itertor(迭代器)

while(s.hasNext()){    //hasNext判断有没有下一条

Object j=s.next();   //next方法指针下移,取出一条

System.out.println(j);} 

作业:

* 1、请使用LinkedList来模拟一个队列(先进先出的特性): [必做题]

* 1.1 拥有放入对象的方法void put(Object o)

* 1.2 取出对象的方法Object get()

* 1.3 判断队列当中是否为空的方法boolean isEmpty();

* 并且,编写测试代码,验证你的队列是否正确。

public class MyQueue {

    //类级别定义一个LinkedList类型的变量

LinkedList queue=new LinkedList();

public void put(Object o){

queue.addFirst(o);

}

public Object get(){

Object obj=queue.getLast();

queue.removeLast();

return obj;

}

public boolean isEmpty(){

return queue.isEmpty();

}

public static void main(String[] args) {

MyQueue mq=new MyQueue();

mq.put("hello1");

mq.put("hello2");

mq.put("hello3");

while(!mq.isEmpty()){

Object o=mq.get();

System.out.println(o);

}

}

}

你可能感兴趣的:(08-17集合)