1.容器的打印
package first;
import java.util.*;
public class PrintingContainers {
//定义一个方法接受Collection对象,来保存对象.
static Collection fill(Collection c){
c.add("dog");
c.add("dog");
c.add("cat");
return c;
}
//定义一个方法接受Map对象,来保存对象.
static Map fill(Map m){
m.put("sky", "blue");
m.put("flower","red");
m.put("river", "green");
return m;
}
public static void main(String[] args){
//调用fill()方法来打印容器内容.
//创建一个List类型的对象,让其打印List类型的容器(List类型要求元素按一定顺序排列).
System.out.println(fill(new ArrayList()));
//创建一个Set类型的对象,让其打印Set类型的容器(Set类型要求元素不能有重复).
System.out.println(fill(new HashSet()));
//创建一个Map类型的对象,让其打印Map类型的容器(Map类型要求元素成对有关联的出现).
System.out.println(fill(new HashMap()));
}
}
2.填充容器
package c112;
import java.util.*;
public class FillingLists {
public static void main(String[] args){
List list = new ArrayList();
for(int i = 0; i < 10; i++){
list.add("");
Collections.fill(list, "Hello");
System.out.println(list);
}
}
}
3.封装改写Collections2类
package c112;
public class Pair {
public Object key,value;
public Pair(Object k,Object v){
key = k;
value = v;
}
}
package c112;
public interface MapGenerator{
Pair next();
}
package c112;
import java.util.Collection;
import java.util.Map;
import second.*;
public class Collections2 {
public static void fill(Collection c,Generator gen,int count){
for(int i = 0; i < count; i++ )
c.add(gen.next());
}
public static void fill(Map m,MapGenerator gen,int count){
for(int i = 0; i < count; i++){
Pair p = gen.next();
m.put(p.key, p.value);
}
}
public static class RandStringPairGenerator implements MapGenerator{
private static Arrays2.RandStringGenerator rsg;
public RandStringPairGenerator(int length){
rsg = new Arrays2.RandStringGenerator(length);
}
@Override
public Pair next() {
// TODO Auto-generated method stub
return new Pair(rsg.next(),rsg.next());
}
}
public static RandStringPairGenerator rspg = new RandStringPairGenerator(5);
public static class StringPairGenerator implements MapGenerator{
private int index = -1;
private String[][] d;
public StringPairGenerator(String[][] data){
d = data;
}
@Override
public Pair next() {
// TODO Auto-generated method stub
index = (index+1)%d.length;
return new Pair(d[index][0],d[index][1]);
}
public StringPairGenerator reset(){
index = -1;
return this;
}
}
//public static MapGenerator geography;
public static StringPairGenerator geography = new StringPairGenerator(CountryCapitals.pairs);
public static class StringGenerator implements Generator{
private String[][] d;
private int position;
private int index = 1;
public StringGenerator(String[][] data, int pos){
d = data;
position = pos;
}
public Object next(){
index = (index+1)%d.length;
return d[index][position];
}
public StringGenerator reset(){
index = -1;
return this;
}
}
public static StringGenerator countries = new StringGenerator(CountryCapitals.pairs,0);
public static StringGenerator capitals = new StringGenerator(CountryCapitals.pairs,1);
}
//定义国家和首都的集合
package c112;
public class CountryCapitals {
public static final String[][] pairs = {
// Africa
{"ALGERIA","Algiers"}, {"ANGOLA","Luanda"},
{"BENIN","Porto-Novo"}, {"BOTSWANA","Gaberone"},
{"BURKINA FASO","Ouagadougou"},
{"BURUNDI","Bujumbura"},
{"CAMEROON","Yaounde"}, {"CAPE VERDE","Praia"},
{"CENTRAL AFRICAN REPUBLIC","Bangui"},
{"CHAD","N'djamena"}, {"COMOROS","Moroni"},
{"CONGO","Brazzaville"}, {"DJIBOUTI","Dijibouti"},
{"EGYPT","Cairo"}, {"EQUATORIAL GUINEA","Malabo"},
{"ERITREA","Asmara"}, {"ETHIOPIA","Addis Ababa"},
{"GABON","Libreville"}, {"THE GAMBIA","Banjul"},
{"GHANA","Accra"}, {"GUINEA","Conakry"},
{"GUINEA","-"}, {"BISSAU","Bissau"},
{"COTE D'IVOIR (IVORY COAST)","Yamoussoukro"},
{"KENYA","Nairobi"}, {"LESOTHO","Maseru"},
{"LIBERIA","Monrovia"}, {"LIBYA","Tripoli"},
{"MADAGASCAR","Antananarivo"}, {"MALAWI","Lilongwe"},
{"MALI","Bamako"}, {"MAURITANIA","Nouakchott"},
{"MAURITIUS","Port Louis"}, {"MOROCCO","Rabat"},
{"MOZAMBIQUE","Maputo"}, {"NAMIBIA","Windhoek"},
{"NIGER","Niamey"}, {"NIGERIA","Abuja"},
{"RWANDA","Kigali"},
{"SAO TOME E PRINCIPE","Sao Tome"},
{"SENEGAL","Dakar"}, {"SEYCHELLES","Victoria"},
{"SIERRA LEONE","Freetown"}, {"SOMALIA","Mogadishu"},
{"SOUTH AFRICA","Pretoria/Cape Town"},
{"SUDAN","Khartoum"},
{"SWAZILAND","Mbabane"}, {"TANZANIA","Dodoma"},
{"TOGO","Lome"}, {"TUNISIA","Tunis"},
{"UGANDA","Kampala"},
{"DEMOCRATIC REPUBLIC OF THE CONGO (ZAIRE)",
"Kinshasa"},
{"ZAMBIA","Lusaka"}, {"ZIMBABWE","Harare"},
// Asia
{"AFGHANISTAN","Kabul"}, {"BAHRAIN","Manama"},
{"BANGLADESH","Dhaka"}, {"BHUTAN","Thimphu"},
{"BRUNEI","Bandar Seri Begawan"},
{"CAMBODIA","Phnom Penh"},
{"CHINA","Beijing"}, {"CYPRUS","Nicosia"},
{"INDIA","New Delhi"}, {"INDONESIA","Jakarta"},
{"IRAN","Tehran"}, {"IRAQ","Baghdad"},
{"ISRAEL","Tel Aviv"}, {"JAPAN","Tokyo"},
{"JORDAN","Amman"}, {"KUWAIT","Kuwait City"},
{"LAOS","Vientiane"}, {"LEBANON","Beirut"},
{"MALAYSIA","Kuala Lumpur"}, {"THE MALDIVES","Male"},
{"MONGOLIA","Ulan Bator"},
{"MYANMAR (BURMA)","Rangoon"},
{"NEPAL","Katmandu"}, {"NORTH KOREA","P'yongyang"},
{"OMAN","Muscat"}, {"PAKISTAN","Islamabad"},
{"PHILIPPINES","Manila"}, {"QATAR","Doha"},
{"SAUDI ARABIA","Riyadh"}, {"SINGAPORE","Singapore"},
{"SOUTH KOREA","Seoul"}, {"SRI LANKA","Colombo"},
{"SYRIA","Damascus"},
{"TAIWAN (REPUBLIC OF CHINA)","Taipei"},
{"THAILAND","Bangkok"}, {"TURKEY","Ankara"},
{"UNITED ARAB EMIRATES","Abu Dhabi"},
{"VIETNAM","Hanoi"}, {"YEMEN","Sana'a"},
// Australiaand Oceania
{"AUSTRALIA","Canberra"}, {"FIJI","Suva"},
{"KIRIBATI","Bairiki"},
{"MARSHALL ISLANDS","Dalap-Uliga-Darrit"},
{"MICRONESIA","Palikir"}, {"NAURU","Yaren"},
{"NEW ZEALAND","Wellington"}, {"PALAU","Koror"},
{"PAPUA NEW GUINEA","Port Moresby"},
{"SOLOMON ISLANDS","Honaira"}, {"TONGA","Nuku'alofa"},
{"TUVALU","Fongafale"}, {"VANUATU","< Port-Vila"},
{"WESTERN SAMOA","Apia"},
// EasternEurope and former USSR
{"ARMENIA","Yerevan"}, {"AZERBAIJAN","Baku"},
{"BELARUS (BYELORUSSIA)","Minsk"},
{"GEORGIA","Tbilisi"},
{"KAZAKSTAN","Almaty"}, {"KYRGYZSTAN","Alma-Ata"},
{"MOLDOVA","Chisinau"}, {"RUSSIA","Moscow"},
{"TAJIKISTAN","Dushanbe"}, {"TURKMENISTAN","Ashkabad"},
{"UKRAINE","Kyiv"}, {"UZBEKISTAN","Tashkent"},
// Europe
{"ALBANIA","Tirana"}, {"ANDORRA","Andorra la Vella"},
{"AUSTRIA","Vienna"}, {"BELGIUM","Brussels"},
{"BOSNIA","-"}, {"HERZEGOVINA","Sarajevo"},
{"CROATIA","Zagreb"}, {"CZECH REPUBLIC","Prague"},
{"DENMARK","Copenhagen"}, {"ESTONIA","Tallinn"},
{"FINLAND","Helsinki"}, {"FRANCE","Paris"},
{"GERMANY","Berlin"}, {"GREECE","Athens"},
{"HUNGARY","Budapest"}, {"ICELAND","Reykjavik"},
{"IRELAND","Dublin"}, {"ITALY","Rome"},
{"LATVIA","Riga"}, {"LIECHTENSTEIN","Vaduz"},
{"LITHUANIA","Vilnius"}, {"LUXEMBOURG","Luxembourg"},
{"MACEDONIA","Skopje"}, {"MALTA","Valletta"},
{"MONACO","Monaco"}, {"MONTENEGRO","Podgorica"},
{"THE NETHERLANDS","Amsterdam"}, {"NORWAY","Oslo"},
{"POLAND","Warsaw"}, {"PORTUGAL","Lisbon"},
{"ROMANIA","Bucharest"}, {"SAN MARINO","San Marino"},
{"SERBIA","Belgrade"}, {"SLOVAKIA","Bratislava"},
{"SLOVENIA","Ljujiana"}, {"SPAIN","Madrid"},
{"SWEDEN","Stockholm"}, {"SWITZERLAND","Berne"},
{"UNITED KINGDOM","London"}, {"VATICAN CITY","---"},
// North andCentral America
{"ANTIGUA AND BARBUDA","Saint John's"},
{"BAHAMAS","Nassau"},
{"BARBADOS","Bridgetown"}, {"BELIZE","Belmopan"},
{"CANADA","Ottawa"}, {"COSTA RICA","San Jose"},
{"CUBA","Havana"}, {"DOMINICA","Roseau"},
{"DOMINICAN REPUBLIC","Santo Domingo"},
{"EL SALVADOR","San Salvador"},
{"GRENADA","Saint George's"},
{"GUATEMALA","Guatemala City"},
{"HAITI","Port-au-Prince"},
{"HONDURAS","Tegucigalpa"}, {"JAMAICA","Kingston"},
{"MEXICO","Mexico City"}, {"NICARAGUA","Managua"},
{"PANAMA","Panama City"}, {"ST. KITTS","-"},
{"NEVIS","Basseterre"}, {"ST. LUCIA","Castries"},
{"ST. VINCENT AND THE GRENADINES","Kingstown"},
{"UNITED STATES OF AMERICA","Washington, D.C."},
// SouthAmerica
{"ARGENTINA","Buenos Aires"},
{"BOLIVIA","Sucre (legal)/La Paz(administrative)"},
{"BRAZIL","Brasilia"}, {"CHILE","Santiago"},
{"COLOMBIA","Bogota"}, {"ECUADOR","Quito"},
{"GUYANA","Georgetown"}, {"PARAGUAY","Asuncion"},
{"PERU","Lima"}, {"SURINAME","Paramaribo"},
{"TRINIDAD AND TOBAGO","Port of Spain"},
{"URUGUAY","Montevideo"}, {"VENEZUELA","Caracas"},
};
}
4.测试容器中元素的类型
package c112;
public class Cat {
private int catNumber;
public Cat(int i){
catNumber = i;
}
public void id(){
System.out.println("Cat #"+catNumber);
}
}
package c112;
public class Dog {
private int dogNumber;
public Dog(int i){
dogNumber = i;
}
public void id(){
System.out.println("Dog #"+dogNumber);
}
}
package c112;
import java.util.*;
public class CatAndDog {
public static void main(String[] args){
List list = new ArrayList();
for(int i = 0; i < 7; i++)
list.add(new Cat(i));
list.add(new Dog(7));
for(int i = 0; i < list.size(); i++)
((Cat)list.get(i)).id();
}
}
5.制作一个类型明确的ArrayList
public class MouseList{
private List list = new ArrayList();
public void add(Mouse m){
list.add(m);
}
publlic Mouse get(int index){
return (Mouse)list.get(index);
}
public int size(){
return list.size();
}
}
6.迭代器
package c112;
import java.util.*;
public class CatAndDog {
public static void main(String[] args){
List list = new ArrayList();
for(int i = 0; i < 7; i++)
list.add(new Cat(i));
Iterator e = list.iterator();
while(e.hasNext())
((Cat)e.next()).id();
}
}