博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA学习笔记——JAVA基础语法(六)
阅读量:6086 次
发布时间:2019-06-20

本文共 3955 字,大约阅读时间需要 13 分钟。

Collection容器

1、首先我们要了解为什么JAVA中要有容器?

  我们知道数组的长度一旦指定,程序在执行过程中就不能改变,正是因为数组有这样的缺陷,所以才出现就(collection)容器,容器的大小可以任意改变,容器的大小就是根据你实际放入了多少的数据而相应的变大。

2、容器中包括Set  和List,那么他们有什么区别呢?

  Set是无序唯一的,底层是用Map实现的;List是有序不唯一的,底层是数组,所以可以用索引来得到值

  注意:在list中删除数据时,当删除的是里面的整数数据类型时要知道使用包装类型进行删除,我们要知道JAVA会自动装箱和拆箱  但是在Set就不需要使用包装类型来删除,因为Set中没有索引

3、List又分为Arrylist和LinkedList,他们之间又有什么区别呢?各适用于什么情况呢?

  ArrayList(数组)的内存地址连续,这个容器中的数据是经常用来查找的;LinkedList(链表)内存地址不连续,这个容器中的数据经常用来更新

4、Iterator(容器的迭代器)

  所有实现了Collection接口的类都有一个iterator方法,这个方法会得到一个实现了Iterator的类的对象;List虽然有索引,但是也可以使用JAVA5.0以后出来的增强for循环,其实就相当于.Net中的foreach(),但是因为不能方便的操作索引,只用于简单的遍历,如果增强的for循环迭代的是容器的话内部默认的也是使用的Iterator迭代器实现的。但是也必须要使用迭代器来实现,因为这是唯一县城安全的方法

5、Collections类

  该类提供了一系列的方法来对List进行操作,比如说我们自己写的类要进行比较大小或者是排序,那么和它相关的一切规则需要我们自己来定义,比如比较对象是否相等或者是判断大小的规则,如果是要实现比较大小的类一定要实现Comparable接口然后重写public int compareTo(Object o)方法,为了更美观的输出到控制台上也建议重写public String toString()方法

   如下程序调用collections类中的sort方法对list进行排序,在自己写的类当中规定好排序的方法:

1 import java.util.*; 2  3 public class test{ 4          public static void main(String[] args){ 5  6                    List
list = new ArrayList
(); 7 list.add(new Person("jack",23)); 8 list.add(new Person("tom",19)); 9 list.add(new Person("rose",22));10 list.add(new Person("mack",21));11 list.add(new Person("twins",34)); 12 13 Collections.sort(list); //因为该方法是静态的所以可以直接使用 类名.方法名 直接调用14 System.out.println(list);15 } 16 }17 18 class Person implements Comparable{19 20 public Person(String name,int age){21 this.name = name;22 this.age = age;23 }24 String name;25 int age;26 public String toString(){27 return "name "+this.name +" age:"+this.age ;28 }29 public int compareTo(Object o){30 Person p = (Person)o;31 if(this.age > p.age){32 return 1;33 }else if(this.age < p.age){34 return -1;35 }else{36 return 0;37 }38 39 }40 41 }

  6、JAVA5.0之后出现的泛型

  概念:指定当前的容器中只能放置什么样的类型,并且泛型中没有父类的引用指向子类的对象

7、容器中为什么会出现Map?

  因为Set是无序的,唯一的,hashSet没有索引,不方便通过索引来对容器进行操作,所以出现了Map,所以Map就是可以创建索引,而且这个索引还是自己定义的。Map是以Key-value(键-值)对的形式来保存数据的,添加数据是使用Map.put( index,value);index是自定义的类型,可以是自己规定的;获取数据是使用Map.get(index) 其实Map就相当于List只是Map是添加了索引的功能

  Map的迭代方法有两种:

  1)、先使用map.keySet()方法获得map里面的所有Key值封装成Set类型,然后再使用set的iterator迭代器来进行迭代,获得key值就可以获得value值  如下代码:

import java.util.*;public class test{public static void main(String[] args){                  Map
map = new HashMap
(); map.put("1","zhong"); map.put("2","ke"); map.put("3","wen"); map.put("4","good"); map.put("5","night !!"); Set
set = map.keySet(); for(Iterator i = set.iterator();i.hasNext();){ String key = (String)i.next(); System.out.println(map.get(key)); }} }

 

  2)、使用Map中的EntrySet方法来获得键值对Entry,包装成Set试图在使用Set中的Iterator方法进行迭代。Entry代表的是一对key-value,我们可以把他看成是Map的属性(成员变量)

  如下代码所示:

import java.util.*;public class test{public static void main(String[] args){                 Map
map = new HashMap
(); map.put("1","zhong"); map.put("2","ke"); map.put("3","wen"); map.put("4","good"); map.put("5","night !!"); Set
> entrys = map.entrySet(); for(Iterator
> i = entrys.iterator();i.hasNext();){ Map.Entry
entry = i.next(); System.out.println(entry.getValue()); } } }

 

 

 

转载于:https://www.cnblogs.com/bod08zhongkewen/archive/2013/01/31/2888186.html

你可能感兴趣的文章
ACID、Data Replication、CAP与BASE
查看>>
每日一句(2014-10-16)
查看>>
交换输出
查看>>
Android wakelock机制
查看>>
hdu3182 状态压缩水题
查看>>
SQL—— 事务
查看>>
Hibernate Annotation 设置字段的默认值
查看>>
你所不知道的SQL Server数据库启动过程,以及启动不起来的各种问题的分析及解决技巧...
查看>>
原已经安装好的nginx,现在需要添加一个未被编译安装的模块--echo-nginx-module-0.56...
查看>>
Android学习之适配器ArrayAdapter SimpleAdapter
查看>>
hdu 1561 The more, The Better (树上背包)
查看>>
SHELL函数处理
查看>>
一口气看完一个项目源码(一)之用户注册
查看>>
DBA_Oracle海量数据处理分析(方法论)
查看>>
看看C# 6.0中那些语法糖都干了些什么(中篇)
查看>>
终端 进程关系
查看>>
ios取证
查看>>
T-sql语句查询执行顺序
查看>>
[MODx] 5. WayFinder
查看>>
使用CSS3实现超炫的Loading(加载)动画效果
查看>>