Collections和Collection有什么区别?
Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法。 它有两个常用的子接口, List:对元素都有定义索引。有序的。可以重复元素。Set:不可以重复元素。无序。
- //代码示例:
- import java.util.List;
- import java.util.ArrayList;
- public class Test{
- public static void main(String[] args){
- ArrayList al = new ArrayList();
- al.add("黑马程序员A");//添加了一个元素
- al.add("黑马程序员B");
- al.add("黑马程序员C");
- al.add("黑马程序员D");
- System.out.println(al.get(1));
- al.remove("黑马程序员D");//删除一个元素
- sop(al.size());//打印下集合的长度 结果为3.因为删了一个
- al.clear();//清空集合
- sop(al.contains("黑马程序员C"));
- sop(al.isEmpty);
- method();
- }
- public static void method(){
- List list1 = new ArrayList();
- list1.add("黑马程序员A");
- list1.add("黑马程序员B");
- list1.add("黑马程序员C");
- list1.add("黑马程序员D");
- List list2 = new ArrayList();
- list2.add("黑马程序员A");
- list2.add("黑马程序员B");
- list2.add("黑马程序员E");
- list2.add("黑马程序员F");
- list1.removeAll(list2);//删除交集。拿list1的元素跟list2的元素比,如果相同就删除。调用父类的方法
- sop(list1);
- }
- public static void sop(Object obj){
- System.out.println(obj);
- }
- }
- //注: Test.java使用了未经检查或不安全的操作。
- //注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
//代码示例:
import java.util.List;
import java.util.ArrayList;
public class Test{
public static void main(String[] args){
ArrayList al = new ArrayList();
al.add("黑马程序员A");//添加了一个元素
al.add("黑马程序员B");
al.add("黑马程序员C");
al.add("黑马程序员D");
System.out.println(al.get(1));
al.remove("黑马程序员D");//删除一个元素
sop(al.size());//打印下集合的长度 结果为3.因为删了一个
al.clear();//清空集合
sop(al.contains("黑马程序员C"));
sop(al.isEmpty);
method();
}
public static void method(){
List list1 = new ArrayList();
list1.add("黑马程序员A");
list1.add("黑马程序员B");
list1.add("黑马程序员C");
list1.add("黑马程序员D");
List list2 = new ArrayList();
list2.add("黑马程序员A");
list2.add("黑马程序员B");
list2.add("黑马程序员E");
list2.add("黑马程序员F");
list1.removeAll(list2);//删除交集。拿list1的元素跟list2的元素比,如果相同就删除。调用父类的方法
sop(list1);
}
public static void sop(Object obj){
System.out.println(obj);
}
}
//注: Test.java使用了未经检查或不安全的操作。
//注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
Collections是集合框架中的一个工具类。该类中的方法都是静态的。
提供的方法中有可以对List集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。
如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
List和Set有什么异同点?
List:元素是有序的,元素可以重复
ArrayList 1.数组实现 2.增长50% 3.线程不安全 4.遍历效率比较高
LinkedList 1.链表实现 2.线程不安全 3.插入与删除效率高 4.方便操作头尾元素
Vector(了解) 1.数组实现 2.增长100% 3.线程安全
Set集合:元素是有序的,元素值唯一,不允许重复。
HashSet 1.hash表实现 2.线程不安全 3.效率比较高 4.维护元素唯一性是通过元素的hashCode与equals
LinkedHashSet 添加与取出的顺序一致的。
TreeSet 1.二叉树 2.线程不安全 3.效率比较低,因为它可以进行排序。 4.维护元素唯一性是通过自然顺序(Comparable的compareTo)或比较器(Comparator的compare方法)
Map有哪些常用类,各有什么特点?
Map与Collection在集合框架中属并列存在
Map存储的是键值对Map存储元素使用put方法,Collection使用add方法
Map集合没有直接取出元素的方法,而是先转成Set集合,在通过迭代获取元素
Map集合中键要保证唯一性
取出map集合中所有元素的方式一:keySet()方法。
可以将map集合中的键都取出存放到set集合中。对set集合进行迭代。迭代完成,再通过get方法对获取到的键进行值的获取。
Set keySet = map.keySet();
Iterator it = keySet.iterator();
while(it.hasNext())
{
Object key = it.next();
Object value = map.get(key);
System.out.println(key+":"+value);
}
--------------------------------------------------------
取出map集合中所有元素的方式二:entrySet()方法。
Set<map.entry<String,String>> entrySet = map.entrySet();
Iterator<map.entry<String,String>> it = entrySet.iterator();
while(it.hasNext()) {
Map.Entry me = (Map.Entry)it.next();
System.out.println(me.getKey()+"::::"+me.getValue());
}
常用类有及特点:
Hashtable:线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。
HashMap:线程不安全,速度快,允许存放null键,null值。
TreeMap:对键进行排序,排序原理与TreeSet相同。
小小的小结了下,欢迎留言补充