Java集合类: Set、List、Map、Queue使用场景梳理(七)
ic static void main(String[] args)
{
String[] books = {
"疯狂Java讲义",
"轻量级Java EE企业应用实战"
};
List bookList = new ArrayList();
for (int i = 0; i < books.length ; i++ )
{
bookList.add(books[i]);
}
ListIterator lit = bookList.listIterator();
while (lit.hasNext())
{
System.out.println(lit.next());
lit.add("-------分隔符-------");
}
System.out.println("=======下面开始反向迭代=======");
while(lit.hasPrevious())
{
System.out.println(lit.previous());
}
}
}
复制代码
0x4: Map
HashMap、Hashtable
复制代码
import java.util.*;
class A
{
int count;
public A(int count)
{
this.count = count;
}
//根据count的值来判断两个对象是否相等。
public boolean equals(Object obj)
{
if (obj == this)
return true;
if (obj!=null &&
obj.getClass()==A.class)
{
A a = (A)obj;
return this.count == a.count;
}
return false;
}
//根据count来计算hashCode值。
public int hashCode()
{
return this.count;
}
}
class B
{
//重写equals()方法,B对象与任何对象通过equals()方法比较都相等
public boolean equals(Object obj)
{
return true;
}
}
public class HashtableTest
{
public static void main(String[] args)
{
Hashtable ht = new Hashtable();
ht.put(new A(60000) , "疯狂Java讲义");
ht.put(new A(87563) , "轻量级Java EE企业应用实战");
ht.put(new A(1232) , new B());
System.out.println(ht);
//只要两个对象通过equals比较返回true,
//Hashtable就认为它们是相等的value。
//由于Hashtable中有一个B对象,
//它与任何对象通过equals比较都相等,所以下面输出true。
System.out.println(ht.containsValue("测试字符串")); //①
//只要两个A对象的count相等,它们通过equals比较返回true,且hashCode相等
//Hashtable即认为它们是相同的key,所以下面输出true。
System.out.println(ht.containsKey(new A(87563))); //②
//下面语句可以删除最后一个key-value对
ht.remove(new A(1232)); //③
//通过返回Hashtable的所有key组成的Set集合,
//从而遍历Hashtable每个key-value对
for (Object key : ht.keySet())
{
System.out.print(key + "---->");
System.out.print(ht.get(key) + "\n");
}
}
}
复制代码
当使用自定义类作为HashMap、Hashtable的key时,如果重写该类的equals(Object obj)和hashCode()方法,则应该保证两个方法的判断标准一致--当两个key通过equals()方法比较返回true时,两个key的hashCode()的返回值也应该相同
LinkedHashMap
复制代码
import java.util.*;
public class LinkedHashMapTest
{
public static void main(String[] args)
{
LinkedHashMap scores = new LinkedHashMap();
scores.put("语文" , 80);
scores.put("英文" , 82);
scores.put("数学" , 76);
//遍历scores里的所有的key-value对
for (Object key : scores.keySet())
{
System.out.println(key + "------>" + scores.get(key));
}
}
}
复制代码
Properties
复制代码
import java.util.*;
import java.io.*;
public class PropertiesTest
{
public static void main(String[] args) throws Exception
{
Properties props = new Properties();
//向Properties中增加属性
props.setProperty("username" , "yeeku");
props.setProperty("password" ,