为了更深入的了解list集合中方法的一些用法,用下面这个例子记得会更深刻些,再加上下面的源码解读。
增加: 1:add() 将指定对象存储到容器中 add 方法的参数类型是Object 便于接收任意对象 2:addAll() 将指定集合中的元素添加到调用该方法和集合中 删除: 3:remove() 将指定的对象从集合中删除 4:removeAll() 将指定集合中的元素删除 修改: 5:clear() 清空集合中的所有元素 判断: 6:isEmpty() 判断集合是否为空 7:contains() 判断集合何中是否包含指定对象 8:containsAll() 判断集合中是否包含指定集合 9:使用equals()判断两个对象是否相等 获取: 10:int size() 返回集合容器的大小 转成数组 11: toArray() 集合转换数组 |
package Work5;
import java.util.ArrayList;
import java.util.Collection;
public class CollT {
public static void main(String[] args) {
Collection<String> a = new ArrayList<String>();
Collection<String> c = new ArrayList<String>();
Collection<String> d = new ArrayList<String>();
Collection<String> e = new ArrayList<String>();
ArrayList<Integer> h = new ArrayList<Integer>();
h.add(4);
h.add(33);
h.add(66);
h.add(77);
h.add(345);
h.add(44);
a.add("白");
a.add("日");
a.add("依");
a.add("山");
a.add("尽");
c.add("黄");
c.add("河");
d.add("白");
d.add("日");
d.add("依");
d.add("山");
d.add("尽");
e.add("山");
e.add("尽");
System.out.println(a.isEmpty()); //false
System.out.println(a.add("白")); //true
System.out.println(a.addAll(c)); //addAll 把c中的元素都添加给a,破坏a的集合结构,不破坏c的
System.out.println(a); //[白, 日, 依, 山, 尽, 白, 黃, 河] list有序,可以重复,所以会显示两个“白”
System.out.println(c); //[黃, 河]
System.out.println(a.contains(null));
System.out.println(a.contains("地")); //false contains a集合中是否包含 “地”
System.out.println(a.containsAll(e));//true 就是判断e中的所有元素都在a中吗。都在的话返回true,有一个不在就返回false。
System.out.println(e.containsAll(a));//false
System.out.println(a.equals(c)); //false
System.out.println(c);
System.out.println(a.containsAll(d));//true
a.clear();//相当于实例化,重新new了一个list集合
System.out.println(a);
System.out.println(a.containsAll(d)); //false
}
}
contains()方法,源码解读
/**
* Returns <tt>true</tt> if this list contains the specified element.
* More formally, returns <tt>true</tt> if and only if this list contains
* at least one element <tt>e</tt> such that
* <tt>(o==null ? e==null : o.equals(e))</tt>.
*
* @param o element whose presence in this list is to be tested
* @return <tt>true</tt> if this list contains the specified element
*/
public boolean contains(Object o) {
return indexOf(o) != -1;
}
contains里面是indexof方法,该方法的用法:返回字符串中indexof(String)中字符串string在父串中首次出现的位置,从0开始。
没有就返回-1;方便判断和截取字符串。
contains方法:是判断字符串中是否有子字符串,如果有就返回true,没有就返回false。
containsAll()方法
public boolean containsAll(Collection<?> c) {
Iterator<?> e = c.iterator();
while (e.hasNext())
if (!contains(e.next()))
return false;
return true;
}
a.containsAll(c)
containsAll就是判断c中的所有元素都在a中吗。都在的话返回true,有一个不在就返回false。
hasNext()是Scanner类的一个方法,判断是否有输入,有输入项,a .hasNext()为true,没有输入项,a .hasNext()为false。
这是java的迭代器的用法。
1)使用方法 iterator()要求容器返回一个 Iterator。第一次调用Iterator 的next()方法时,它返回序列的第一个元素。
2)使用next()获得序列中的下一个元素。
3)使用hasNext()检查序列中是否还有元素。
4)使用remove()将上一次返回的元素从迭代器中移除。
clear()方法
相当于实例化,重新new了一个list集合。把之前集合中的元素全部清空。
/**
* Removes all of the elements from this list. The list will
* be empty after this call returns.
*/
public void clear() {
modCount++;
// Let gc do its work
for (int i = 0; i < size; i++)
elementData[i] = null;
size = 0;
}
参照学习理解此大神博客: