Java集合类01

集合类

---为什么出现集合类?

         面向对象语言对事物的体现都是以对象的形式,所以为了方便对多

         个对象的操作,就需要存储对象,集合就是存储对象最常用的一

         种方式

---数组和集合类同是容器,有何不同?

         -数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。

         -数组中可以存储一类基本数据类型,集合只能存储对象但可以不同类型。

---集合类的特点

         集合只用于存储对象,集合长度是可变的,集合可以存储不同类型

         的对象。

程序示例

import java.util.*;//使用集合需要导入包

/*

1.add方法的参数类型是Object,以便接收任意类型的对象

2.集合中存储的都是对象的引用(地址)

3.迭代器(Iterator)是获取集合中元素的一种方式

*/

class CollectionDemo

{

         publicstatic void main(String[] args)

         {

                   method_get();

         }

         publicstatic void method_get()

         {

                   //迭代器演示

                   ArrayListarrlist1 = new ArrayList();

                   arrlist1.add("zhaoyanli");

                   arrlist1.add("zhaoxiaoleng");

                   arrlist1.add("huanhuan");

                   for(Iteratoriter = arrlist1.iterator(); iter.hasNext(); )//对内存优化好!

                   {

                            System.out.println(iter.next());

                   }

         }

         publicstatic void method_2()

         {

                   //两个集合的操作

                  ArrayList arrlist1 = new ArrayList();

                   arrlist1.add("zhaoyanli");

                   arrlist1.add("huanhuan");

                   arrlist1.add("beibeimama");

 

                   ArrayListarrlist2 = new ArrayList();

                   arrlist2.add("huanhuan");

                   arrlist2.add("henaihenai");

                   //arrlist1.retainAll(arrlist2);//只保留arrlist1中两集合的交集            

                   arrlist1.removeAll(arrlist2);//去掉arrlist1中两集合的交集

                   System.out.println("arrlist1:"+arrlist1);

                   System.out.println("arrlist2:"+arrlist2);

         }

         publicstatic void method_1()

         {

                   //创建一个集合容器,使用Collection接口的子类ArrayList

                   ArrayListarrlist = new ArrayList();

                   //添加元素(对象)

                   arrlist.add("xiafan");

                   arrlist.add("love");

                   arrlist.add("huanhuan");

                   arrlist.add("2012050807021226");

                   //删除集合元素

                   arrlist.remove("love");

                   //判断元素存在

                   System.out.println("huanhuan在吗:"+arrlist.contains("huanhuan"));

                   System.out.println("新集合:"+arrlist);

                   //清空集合

                   //arrlist.clear();

                   //获取集合长度

                   System.out.println("size:"+arrlist.size());

         }

}

List

---List:元素师有序的,元素可以重复,因为该机和体系有索引。

         ---ArrayList:底层使用的是数组结构。特点:查询快,增删慢,线程不同步

         ---LinkedList:底层使用的是链表数据结构。特点:查询慢,增删快

         ---Vector:底层使用数组结构,线程同步,被ArrayList替代了

列表迭代器

因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。

List集合特有的迭代器 ListIterator Iterator的子接口

在迭代时,不可以通过集合对象的方法操作集合中的元素,因为会发生异常。

我们采用的解决方案是,使用 Lsit集合的 listIterator()方法获取

程序示例ArrayList

import java.util.*;

public class ListDemo

{

         publicstatic void main(String[] args)

         {

                   ArrayListarrlist = new ArrayList();

                   arrlist.add("xiafan");

                   arrlist.add("love");

                   arrlist.add("huanhuan");

                   //在指定位置增加元素

                   arrlist.add(1,"beibei");

                   System.out.println(arrlist);

                   //删除指定位置元素

                   //arrlist.remove(0);

                   //System.out.println(arrlist);

                   //替代指定位置的元素

                   arrlist.set(3,"zhaoxiaoleng");

                   System.out.println(arrlist);

                   //返回指定位置的元素

                   for(inti = 0; i < arrlist.size(); i++)

                   {

                            System.out.println("arrlist["+i+"]="+arrlist.get(i));

                   }

                   /*

                   列表迭代器获取元素方式

                   for(Iteratoriter = arrlist.iterator(); iter.hasNext();)

                   {

                            System.out.println(iter.next());

                   }

                   */

                   //通过indexOf获取对象的位置

                   System.out.println("zhaoxiaolengindex = " + arrlist.indexOf("zhaoxiaoleng"));

                   //获取子列表

                   Listsublist  = arrlist.subList(2, 4);//包含头,不包含尾

                   System.out.println("sublist= " + sublist);

         }

}

程序示例LinkedList:

importjava.util.*;

class MyQueue//队列

{

       private LinkedList linkList;

       MyQueue()

       {

              linkList = new LinkedList();

       }

       public void myAdd(Object obj)

       {

              linkList.offerLast(obj);//添加

       }

       public Object myGet()//返回对象

       {

              //return linkList.peekFirst();返回

              return linkList.pollFirst();//删除元素(返回)

       }

       public boolean isNull()

       {

              return linkList.isEmpty();

       }

}

class MyStack//

{

       private LinkedList linkList;

       MyStack()

       {

              linkList = new LinkedList();

       }

       public void myAdd(Object obj)

       {

              linkList.offerLast(obj);

       }

       public Object myGet()//返回对象

       {

              return linkList.pollLast();

       }

       public boolean isNull()

       {

              return linkList.isEmpty();

       }

}

public classLinkedListDemo

{

       public static void main(String[] args)

       {

              MyStack stack = new MyStack();

              stack.myAdd("huanhuan");

              stack.myAdd("beibei");

              stack.myAdd("fanfan");

              while(!stack.isNull())

              {

                     System.out.println(stack.myGet());

              }

       }

       public static void linkedListMethod()

       {

              LinkedList linkList = newLinkedList();

              linkList.addFirst("zhaoyanli");

              linkList.addFirst("zhaoxiaoleng");

              linkList.addFirst("huanhuan");

              System.out.println(linkList);

              System.out.println(linkList.getLast());

              System.out.println(linkList.removeFirst());

              System.out.println(linkList);

       }

}

练习

/*

将自定义对象作为元素存到ArrayList集合中,并去除重复元素

比如:存放人对象。同姓名同年龄,视为同一个人。

*/

importjava.util.*;

class Person

{

       private String name;

       private int age;

       Person(String name, int age)

       {

              this.name = name;

              this.age = age;

       }

       public boolean equals(Object obj)//自动调用该方法

       {

              if(!(obj instanceof Person))

                     return false;

              Person p = (Person)obj;//向下转型,因为Object类中无该equals方法

              //System.out.println(this.name+"------"+p.name);//打印每次比较的情况

              return (this.name.equals(p.name))&& (this.age == p.age);

       }

       public String getName()

       {

              return name;

       }

       public int getAge()

       {

              return age;

       }

}

public classArrayListTest2

{

       public static ArrayListsingleElement(ArrayList arrList)//去重复元素方法

       {

              ArrayList tempList = newArrayList();//定义临时容器

              for(Iterator iter =arrList.iterator(); iter.hasNext(); )

              {

                     Object obj = iter.next();

                     if(!tempList.contains(obj))

                            tempList.add(obj);

              }

              return tempList;

       }

       public static void main(String[] args)

       {

              ArrayList arrList = newArrayList();

              arrList.add(newPerson("huanhuan", 22));

              arrList.add(newPerson("xiaoleng", 22));

              arrList.add(newPerson("huanhuan", 21));

              arrList.add(newPerson("huanhuan", 22));

              arrList.add(newPerson("xiaoleng", 22));

             

              arrList = singleElement(arrList);

 

              for(Iterator iter =arrList.iterator(); iter.hasNext(); )

              {

                     Person pers =(Person)iter.next();//向下转型

                     System.out.println(pers.getName()+"-----"+pers.getAge());

              }

       }

}

Set

---Set:元素是无序(存入和取出的顺序不一定一致)的,元素不可以重复

         ---HashSet:底层使用的数据结构是哈希表

                   HashSet是如何保证元素唯一性的?

                   通过元素的两个方法,hashCode()equals()。如果hashCode值相同,会

                   调用equals方法,若hashCode值不同,不会调用equals

                   注意,判断元素是否存在及删除等操作,依据的是元素的hashCodeequals方法

程序示例:

importjava.util.*;

class Person

{

       private String name;

       private int age;

       Person(String name, int age)

       {

              this.name = name;

              this.age = age;

       }

       public int hashCode()

       {

              return name.hashCode()+age*22;//哈希地址的计算方法,

                                                               //hashCode()字符串中定义了此方法

       }

       public boolean equals(Object obj)

       {

              Person per = (Person)obj;

              if(!(per instanceof Person))//注意写法

                     return false;

              return(per.name.equals(this.name)) && (per.age== this.age);

       }

       public String getName()

       {

              return name;

       }

       public int getAge()

       {

              return age;

       }

}

public class HashSetDemo

{

       /*

       public static void hashDemo_basic()

       {

              HashSet hashSet = new HashSet();

 

              hashSet.add("huanhuan");

              hashSet.add("fanfan");

              hashSet.add("beibei");

 

              for(Iterator iter =hashSet.iterator(); iter.hasNext(); )

              {

                     System.out.println("----->"+ iter.next());

              }

       }

       */

       public static void hashDemo_advanced()

       {

              HashSet hashSet = new HashSet();

              hashSet.add(newPerson("fanfan", 23));

              hashSet.add(newPerson("huanhuan", 22));

              hashSet.add(newPerson("huanhuan", 22));

              hashSet.add(newPerson("beibei", 1));

              for(Iterator iter =hashSet.iterator(); iter.hasNext(); )

              {

                     Person p =(Person)iter.next();//向下转型

                     System.out.println(p.getName()+"::"+p.getAge());

              }

              //System.out.println("ourbaby:"+hashSet.remove(new Person("beibei", 1)));

       }

       public static void main(String[] args)

       {

              //hashDemo();

              hashDemo_advanced();

       }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值