java容器

来源:互联网 发布:安卓java游戏 编辑:程序博客网 时间:2024/05/24 06:33
Java容器总结

一、 容器:为了实现有效的归类管理,我们常常将同类的引用放置在同一数据容器中。


二、 因为数据容器中存放了我们随时可能需要使用到的对象引用,所以一般的数据容器都要提供能提供方便查询、便利、修改等基本接口功能。


三、 Java的容器:List、Map、Set


    


由上图可以看出数据容器主要分为两类:

Collection:存放独立元素的序列。
Map:存放key-value型的元素对。(这种对于一些需要利用key查找value的程序十分的重要)
Collection定义了Collection类型数据最基本、最共性的功能接口,而List对该接口进行了拓展。
常见的四个容器:
LinkedList:其数据结构采用的是链表,此种数据结构的优势是删除和添加的效率很高,但是随机访问元素时效率较ArrayList类低。
ArrayList:其数据结构采用的时线性表,此种结构的优势是访问和查询比较方便,但添加和删除的效率比较低。
HashSet:Set类不允许其中存在重复的元素(集),无法添加一个重复的元素(Set中已经存在)。
HashSet利用Hash函数进行了查询效率上的优化,其contain()方法经常被使用,以用于判断相关元素是否已经被添加过。

HashMap:提供key-value的键值对数据存储机制,可以方便的通过键值查找相应的元素,而且通过Hash散列机制,查找十分的方便。


四、 容器中常用的几种方法: 

                                                                                     

1、boolean   add(Object obj):  向容器中添加指定的元素。
2、Iterator  iterator(): 返回能够遍历当前集合中的所有元素的迭代器。
3、Object[ ]  toArray(): 返回包含此容器中所有元素的数组。
4、Object[ ]  get(int index): 获取下标为index的那个元素。
5、Object  remove(int index): 删除下标为index的那个元素。
6、Object  set(int index, Object element): 在下标为index的元素置为element。
7、Object  add(int index, Object element): 在下标为index处添加一个对象。
8、Object put(Object key, Object value): 向容器中添加指定的元素。
9、Object get(Object  key): 获取关键字为key的那个对象。

10、int  size(): 返回容器中的元素数。

import java.util.ArrayList;public class TestApp {public static void main(String[] args){ArrayList<Integer> arrayList = new ArrayList<Integer>();arrayList.add(11);arrayList.add(22);arrayList.add(33);arrayList.add(44);System.out.println("原数组元素的值为:"+arrayList);arrayList.set(1,222);System.out.println("重置后数组元素的值为:"+arrayList);int i = arrayList.size();System.out.println("数组的长度为:"+i);arrayList.remove(3);System.out.println("删除位置3的元素后:"+arrayList);    arrayList.add(1,00);    System.out.println("在位置1处增添元素后:"+arrayList);}}



五、   容器的分类


容器分为Set集,List列表,Map映射;


Set:Set集合中不区分元素的顺序,不允许有相同的重复数组同时出现,而TreeSet容器比较特殊,元素放进去之后有顺序。
List列表:区分元素的顺序,且允许里面的元素重复。
Map映射:映射中不能包含重复的键值,每个键只能映射一个值。

注意:对于Set和Map来说,元素放进去之后是没有顺序的,如果希望有顺序则可以用treeMap和treeSet来存放数据。


六、 toString() 方法的使用:凡是java中自带的数据类型,都已经重写了toString() 方法;凡是把类对象放到容器中,相应的类都应该实现Object类中的toString()方法。

public class TestToString {public static void main(String[] args){System.out.println(new Integer(2).toString());System.out.println(new String("hello"));System.out.println(new Student("张",5));}}class Student{public String name;public int age;public Student(String name,int age){this.name = name;this.age = age;}public String toString(){     //重写toString方法return "姓名:"+this.name+"年龄:"+this.age;}}


七、 Comparable接口:凡是需要比较的类都应该实现Comparable接口中的compareTo()方法;凡是把类对象放到以树为内部结构的容器中都应该实现Comparable接口中的compareTo()方法。

public class TestComparable {public static void main(String[] args){ArrayList<People> a = new ArrayList<People>();a.add(new People("lidy",22));a.add(new People("ketty",25));a.add(new People("yami",21));Collections.sort(a);for(People people :a){System.out.println(people);}}}class People implements Comparable<People>{String name;int age;public People(String name,int age){this.name = name;this.age = age;}public String toString(){        return this.name+"\t"+this.age;}public int compareTo(People obj){         //重写compareTo方法return obj.age - this.age;        //让其进行降序排列}}


原创粉丝点击