/*
list接口
ArrayList 采用异步处理方式,性能高,但属于非线程安全
Vector 采用同步处理方式,性能低,但属于线程安全
当程序考虑线程安全的时候选Vector,其他选择ArrayList,速度快,性能高
set接口不能加入重复元素,(记忆:s开头same反而不同),但是可以排序
set接口的常用子类
散列存放:HashSet(哈希的话没有排序)
有序存放:TreeSet(有序的)
Iterator接口
集合输出的标准操作,使用Iterator接口
操作原理:迭达输出就是将元素一个个进行判断是否有内容,如果有内容就把内容取出
Map接口
key--->value的方式保存
常用子类
HashMap:无序存放,key不允许重复
Hashtable:无序存放,key不允许重复
public static void main(String[] args) {
//list添加的数据可以重复,非线程安全,速度快
List<String> list=null;
List<String> list1=null;
list=new ArrayList<>();
list.add("A");
list.add("A");
list.add("B");
System.out.println(list);//[A, A, B]
for (int i = 0; i <list.size(); i++) {
System.out.println(list.get(i));
//A
//A
//B
}
System.out.println("移除了第一个元素之后为");
list.remove(0);
for (int i = 0; i <list.size(); i++) {
System.out.println(list.get(i));
//此时打印 A B
}
System.out.println("元素是否为空"+list.isEmpty());//false
System.out.println(list.indexOf("A")); //此时A的下标为0
System.out.println("----------------------------");
list1=new Vector<>();//线程安全,但速度慢
list1.add("a");
list1.add("b");
list1.add("c");
for (int i = 0; i <list1.size(); i++) {
System.out.println(list1.get(i));
//此时打印 a b c
}
System.out.println("----------------------------");
Set<String> set=new HashSet<>();
set.add("A");
set.add("B");
set.add("C");
set.add("D");
set.add("E");
System.out.println(set);//[D, E, A, B, C]没有顺序
set=new TreeSet<>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
set.add("e");
System.out.println(set);//[a, b, c, d, e]有顺序
System.out.println("----------------------------");
List<String>list3=new ArrayList<>();
list3.add("xiaoli");
list3.add("koky");
list3.add("lucy");
list3.add("jack");
//System.out.println(list3);
Iterator<String> iterator=list3.iterator();
while (iterator.hasNext()) {
String str=iterator.next();
if ("lucy".equals(str)) {
//list3.remove(2);//error 迭代输出时候不能list删除元素
iterator.remove();//迭代的删除
}
else {
//System.out.println(iterator.next());
System.out.println(str);
}
}
System.out.println("---------------------");
Map<String, String>map=new HashMap<>();
map.put("name", "jack"); //map的话添加通过put,不是list,set的add
map.put("address", "beijing");
map.put("phone", "123456");
String key=map.get("name");//通过取key
System.out.println(key); //输出value
//怎么样判断key或者value是否存在?
if (map.containsKey("address")) {
System.out.println("key存在");
}
else {
System.out.println("key不存在");
}
if (map.containsValue("beijing1")) {
System.out.println("value存在");
}
else
{
System.out.println("value不存在");
}
//怎么取出全部的key和value呢?
Set<String>s=map.keySet();
Iterator<String> i=s.iterator();
while (i.hasNext()) {
System.out.println(i.next()); //打印全部的key,因为是set,没有顺序
}
Collection<String>c=map.values();
Iterator<String> i1=c.iterator();
while (i1.hasNext()) {
System.out.println(i1.next()); //打印全部的value
}
}
}