java中,Collection c = new ArrayList(); Collection 中的toString()方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中,Collection c = new ArrayList(); Collection 中的toString()方法相关的知识,希望对你有一定的参考价值。
java中,Collection c = new ArrayList(); 然后调用c.toString()方法的时候用的是AbstractCollection类里面的toString()方法吧,现在问题就出来了,Collection c = new ArrayList();这个不是向上转型了吗?现在的c只能用Collection里的方法吧?而AbstractCollection虽然是ArrayList的父类,但是AbstractCollection还是Collection的子实现接口啊。Collection大呀,这个c能用AbstractCollection里的toString方法?应该只能用Collection的或者Collection父类的吧。好纠结
AbstractCollection还是Collection的子实现抽象类啊不是接口,刚才急打错了
public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable
public abstract class AbstractList<E>extends AbstractCollection<E>implements List<E>
AbstractCollection重写了toString,其他都没有,明白了?追问
大哥,这个我知道呀,但是 Collection c = new ArrayList() 的时候,不是向上转型了吗?就限制了c吧?然后c就不能用子类特有的方法了吧?只能用Collection 自己的方法或者Collection的父类的方法吧?
追答如果子类重写了父类的方法,即使声明的对象是父类的对象,调用的方法也是子类的方法啊
当你调用toString的时候,先找ArrayList的,发现没有,然后找AbstractList,还没有,然后找到AbstractCollection中的toString
你可以写个简单的程序试一下
java基础——迭代器
对 Collection 进行迭代的类,称其为迭代器。
迭代器就是专门取出集合元素的对象。但是该对象比较特殊,不能直接创建对象(通过new),该对象是以内部类的形式存在于每个集合类的内部。
如何获取迭代器?Collection接口中定义了获取集合类迭代器的方法(iterator()),所以所有的Collection体系集合都可以获取自身的迭代器。
每个集合子类都对iterator()进行了重写
iterator接口定义的方法
Itreator 该接口是集合的迭代器接口类,定义了常见的迭代方法 1:boolean hasNext() 判断集合中是否有元素,如果有元素可以迭代,就返回true。 2: E next() 返回迭代的下一个元素,注意: 如果没有下一个元素时,调用next元素会抛出NoSuchElementException 3: void remove() 从迭代器指向的集合中移除迭代器返回的最后一个元素(可选操作)。
迭代器遍历/清空集合
public static void main(String[] args) { ArrayList list = new ArrayList(); // 增加:add() 将指定对象存储到容器中 list.add("计算机网络"); list.add("现代操作系统"); list.add("java编程思想"); list.add("java核心技术"); list.add("java语言程序设计"); System.out.println(list); Iterator it = list.iterator(); while (it.hasNext()) { String next = (String) it.next(); System.out.println(next); } }
public class Demo1 { public static void main(String[] args) { Collection coll = new ArrayList(); coll.add("aaa"); coll.add("bbb"); coll.add("ccc"); coll.add("ddd"); System.out.println(coll); Iterator it = coll.iterator(); while (it.hasNext()) { it.next(); it.remove(); } System.out.println(coll); } }
https://www.cnblogs.com/cao-yin/p/9643296.html 常用迭代器遍历大全
迭代器遍历List,Set
List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); Iterator<String> iterator = list.iterator(); while(iterator.hasNext()){ String next = iterator.next(); System.out.println(next); }
Set<String> set = new HashSet<String>(); set.add("c"); set.add("d"); Iterator<String> iteratorSet = set.iterator(); while (iteratorSet.hasNext()){ String next = iteratorSet.next(); System.out.println(next); }
迭代器遍历Map
Map<Integer,String> map = new HashMap<Integer, String>(); Set<Map.Entry<Integer, String>> entries = map.entrySet(); Iterator<Map.Entry<Integer, String>> iteratorMap = entries.iterator(); while (iteratorMap.hasNext()){ Map.Entry<Integer, String> next = iteratorMap.next(); System.out.println(next); }
当然也可以通过Set<K> s = map.keySet();得到键值set后进行遍历
以上是关于java中,Collection c = new ArrayList(); Collection 中的toString()方法的主要内容,如果未能解决你的问题,请参考以下文章
collection c = new arraylist();这句话啥意思?
JAVA这样的定义:Collection<String>n=new ArrayList<String>()与List<String>n=new ArrayList(
JAVA 集合COLLECTION接口能NEW对象吗 ,接口不是不能实例化对象吗
Java map Collection到Collection
java中collection接口 中的方法 add(E o) ,addAll(Collection<? extends E> c) ,void clear() 用法