Map接口提供了分别返回Key值集合,value值集合以及Entry(键值对)集合的方法
get(键):获取Map中键对应的值;entrySet():返回Map中的键值对的集合,为Set类型;keySet():返回Map中的所有键的集合,为Set类型。values():返回Map中的所有值的集合,为Collection类型
Map支持泛型。形式如Map<key,value>
HashMap 是Map中的一个重要实现类,也是最常用的,基于哈希表实现
HashMap中的Entry对象是无序排列的。Key值和Value值都可以为null,但是一个HashMap中只能有一个key值为null的映射
get(键):获取Map中键对应的值;entrySet():返回Map中的键值对的集合,为Set类型;keySet():返回Map中的所有键的集合,为Set类型。values():返回Map中的所有值的集合,为Collection类型
Map支持泛型。形式如Map<key,value>
HashMap 是Map中的一个重要实现类,也是最常用的,基于哈希表实现
HashMap中的Entry对象是无序排列的。Key值和Value值都可以为null,但是一个HashMap中只能有一个key值为null的映射
2017-06-13
Map接口
Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value
Map中的键值对以Entry类型的对象实例形式存在
键(key值)不可重复,value是可以重复的。每个键最多能映射一个value值
Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value
Map中的键值对以Entry类型的对象实例形式存在
键(key值)不可重复,value是可以重复的。每个键最多能映射一个value值
2017-06-13
Set是元素无序并且不可重复的集合,被称为“集”。
HashSet——哈希集,是Set的一个重要实现类
Set中没有set()方法修改某个位置上的元素,因为Set集合是无序的,不能通过索引来修改
在输入Set集合元素的时候只能用foreach方法和iterator方法,不能使用get方法
Set中添加某个对象,无论添加多少次,最终只会保留一个该对象(的引用),并且,保留的是第一次添加的那个。Set中是可以添加空对象null的。
HashSet——哈希集,是Set的一个重要实现类
Set中没有set()方法修改某个位置上的元素,因为Set集合是无序的,不能通过索引来修改
在输入Set集合元素的时候只能用foreach方法和iterator方法,不能使用get方法
Set中添加某个对象,无论添加多少次,最终只会保留一个该对象(的引用),并且,保留的是第一次添加的那个。Set中是可以添加空对象null的。
2017-06-12
需要注意的一点:父类如果只添加了有参数的构造器,那么在刚创建完子类后,子类会报错,需要在父类手动添加一个无参的构造器
在泛型集合中,除了可以存放泛型类型的对象实例,还可以存放泛型子类型的对象实例
list.add(ChildCourse的对象);//ChildCourse类继承与Course类,这里是可以添加Course的子类对象作为集合元素的。
泛型集合中的限定类型不能是基本数据类型,必须是引用数据类型,但可以使用包装类限定允许存入的基本数据类型
在泛型集合中,除了可以存放泛型类型的对象实例,还可以存放泛型子类型的对象实例
list.add(ChildCourse的对象);//ChildCourse类继承与Course类,这里是可以添加Course的子类对象作为集合元素的。
泛型集合中的限定类型不能是基本数据类型,必须是引用数据类型,但可以使用包装类限定允许存入的基本数据类型
2017-06-12
使用泛型管理集合
MyEclipse中的快捷键:选中一段代码,按Ctrl+shift+c可以快速添加注释
如果往集合中添加的元素不是同种类型的,会出现类型转换异常。可以使用泛型保证添加到集合中的元素都是同种类型。
集合中的元素,可以是任意类型的对象(对象的引用),如果把某个对象放入集合,则会忽略他的类型,而把他当做Object处理,而泛型则是规定了某个集合只可以存放特定类型的对象,还会在编译期间进行类型检查,可以直接按指定类型获取集合元素
示例:List<Course> list=new ArrayList<Course>();
MyEclipse中的快捷键:选中一段代码,按Ctrl+shift+c可以快速添加注释
如果往集合中添加的元素不是同种类型的,会出现类型转换异常。可以使用泛型保证添加到集合中的元素都是同种类型。
集合中的元素,可以是任意类型的对象(对象的引用),如果把某个对象放入集合,则会忽略他的类型,而把他当做Object处理,而泛型则是规定了某个集合只可以存放特定类型的对象,还会在编译期间进行类型检查,可以直接按指定类型获取集合元素
示例:List<Course> list=new ArrayList<Course>();
2017-06-12
删除元素:
list.remove(元素);删除集合中的元素,举例:如果list集合对象中索引位置1和索引位置4都是元素object,那么索引位置4上的object将被删除,索引位置1上的object不会被删除。
list.remove(index);删除索引位置上的元素,index的范围必须在集合的范围之内,否则会出现索引下标越界异常
list.removeAll(集合);从这个列表中删除包含在指定集合中的所有元素,可以用Arrays.asList(数组名)的方法把数组转换成集合
list.remove(元素);删除集合中的元素,举例:如果list集合对象中索引位置1和索引位置4都是元素object,那么索引位置4上的object将被删除,索引位置1上的object不会被删除。
list.remove(index);删除索引位置上的元素,index的范围必须在集合的范围之内,否则会出现索引下标越界异常
list.removeAll(集合);从这个列表中删除包含在指定集合中的所有元素,可以用Arrays.asList(数组名)的方法把数组转换成集合
2017-06-12
list.size():获取元素的长度(个数)
通过迭代器遍历集合中的元素:
Iterator迭代器本身是一个接口
list.iterator()返回一个迭代器的实例对象
Iterator i=list.iterator();
i.hasNext();//判断集合中是否还有元素,有返回true,没有返回false
i.next();//返回迭代器中的下一个元素值
迭代器是用来遍历集合中的元素的,本身不具备存储元素的功能。
最后再强调一遍:对象存储到集合中后,类型是被忽略了,默认变成了Object类型,在取值的时候需要再强转。
通过迭代器遍历集合中的元素:
Iterator迭代器本身是一个接口
list.iterator()返回一个迭代器的实例对象
Iterator i=list.iterator();
i.hasNext();//判断集合中是否还有元素,有返回true,没有返回false
i.next();//返回迭代器中的下一个元素值
迭代器是用来遍历集合中的元素的,本身不具备存储元素的功能。
最后再强调一遍:对象存储到集合中后,类型是被忽略了,默认变成了Object类型,在取值的时候需要再强转。
2017-06-12
list.addAll(集合对象);把一个集合添加到另一个集合的队尾位置
list.addAll(index,集合对象);把一个集合添加到另一个集合的指定位置
Arrays.asList(数组):把一个数组转换成List集合
list.addAll(index,集合对象);把一个集合添加到另一个集合的指定位置
Arrays.asList(数组):把一个数组转换成List集合
2017-06-12
最赞回答 / 慕少3462033
这恰巧是你修改为UTF-8引起的问题,这是eclipse的bug,就是不能自动识别javaVM运行环境,例如你设置的全部为UTF-8,那么MyEclipse会默认你的运行环境是UTF-8,实际情况是你的系统是中文版本系统,默认的JavaVM运行环境是GBK,而你控制台却是UTF-8,输出编码出现异常,故输出是乱码。这是比较复杂的,我暂时也没有找到一个一劳永逸的解决方法,只能针对单个执行文件分别设置JAVA虚拟机运行环境(你修改的结果只对当前执行文件有效,不知道怎么将控制台编码缺省值修改为GBK)。具体这么...
2017-06-12