HashMap与HashTable区别:
(1)HashMap是非线程安全的,HashTable是线程安全的,HashMap效率比HashTable的要高。
(2)HashMap的键和值都允许有null存在,而HashTable则都不行。
Map里面的常用方法:
Map集合:该集合存储键(K)值(V)对,一对一往里存,而且要保证键的唯一性。
1、添加
put(K key,V value)
putAll(Map extends K,? extends V> m)
2、删除
clear()
remove(Object key)
3、判断
containsValue(Object value)
containsKey(Object key)
isEmpty()
4、获取
get(Object key)
size()
values()
1、遍历集合
Map tempMap = new HashMap();
tempMap.put("a","APPLE");
tempMap.put("b","BOOK");
tempMap.put("c","COOLER");
Iterator it=tempMap.keySet().iterator();
方式1 迭代遍历
while (it.hasNext()) {
Object key=it.next();
System.out.println(key+" "+tempMap.get(key));
}
方式2 for循环遍历
for(String key : tempMap.keySet()){
System.out.println(tempMap.get(key));
}
结果如下
1、List,Set都是继承自Collection接口
2、Set:检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。 它的值不能重复;
List:和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。它的值可以重复;
3、List接口有三个实现类:LinkedList,ArrayList,Vector ,Set接口有两个实现类:HashSet(底层由HashMap实现),LinkedHashSet
List的一些属性与方法:
List list=new ArrayList();
//添加方法
list.add("第一个元素");
list.add("第二个元素");
list.add("第三个元素");
list.add("第四个元素");
//循环list集合 list长度方法size()
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
或者迭代遍历
for (Iterator i=list.iterator(); i.hasNext();) { //for循环迭代
String li = (String) i.next();
System.out.println(li);
}
//或者while迭代
Iterator i=list.iterator();
while (i.hasNext()) {
String li = (String) i.next();
System.out.println(li);
}
//删除方法
System.out.println("===========================");
System.out.println("移除之后:");
list.remove("第二个元素");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//判断集合中是否包含某个值
System.out.println("============================");
System.out.println("判断集合中的某个值是否存在:");
if(list.contains("第二个元素")){
System.out.println("包含‘第二个元素’");
}else {
System.out.println("不包含‘第二个元素’");
}
if(list.contains("第四个元素")){
System.out.println("包含‘第四个元素’");
}
//判断集合是否为空 list.isEmpty()
//l获取指定下标的元素值 ist.get(index)
System.out.println("============================");
System.out.println("用set方法更新某个指定元素");
//用set方法更新某个指定元素 不可以用list.set(3, "***");这样会报异常,因为list长度只有2
list.set(0, "插入的元素");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//清空list集合
System.out.println("============================");
System.out.println("用set方法更新某个指定元素");
//用set方法更新某个指定元素
list.set(0, "插入的元素");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//以字符串数组为例 创建数组的几种方式
1、String[] str=new String[5];
2、String[] str=new String[]{"a","b"};
3、String[] str={"a","b"};
//数组的冒泡排序
//冒泡排序 外层循环N-1 内层循环N-1-i
int[] a = { -1, 20, 0,200, 9, 10, 90, -100 };
int b = 0;
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - 1-i; j++) {
if (a[j] > a[j + 1]) {
b = a[j];
a[j] = a[j + 1];
a[j + 1] = b;
}
}
System.out.print(" " + b);
}
//把一个数组复制到另一个数组
System.out.println("=================================");
System.out.println("以下是数组的复制");
//数组的复制
int[] firstArray={1,3,2,5,6,4};
//把firstArray复制给lastArray
int[] lastArray=Arrays.copyOf(firstArray, 6);
int[] lastArray2=new int[6];
for(int i=0;i
System.out.println("对lastArray2数组排序:"); //此时lastArray2的元素与firstArray数组元素相同
Arrays.sort(lastArray2);
for(int i=0;i