java无难事笔记(八)

ArrayList用对象数组来实现

 

ArrayList al = new ArrayList()

Al.add(“sun”);

Al.add(“wei”);

Al.add(“xin”);

 

For(int I = 0;i<al.size();i++)

 Print(al.get(i));

 

也可以直接打印对象alArrayList有覆盖toString方法

 

用过asList返回一个固定尺寸的数组,不可以增加元素但是可以通过List.set修改元素

获取一个数组toArray()方法

 

 

 

 

ArrayList

 

import java.util.ArrayList;

 

class ArrayListTest

{

         public static void main(String[] args)

         {

                    ArrayList<Point> al = new ArrayList<Point>();

                    al.add(new Point(2,2));

                    al.add(new Point(5,5));

                    al.add(new Point(3,2));

                    System.out.println(al);

         }

}

 

class Point

{

         int x,y;

         Point(int x,int y)

         {

                   this.x = x;

                   this.y = y;

         }

         public String toString()

         {

                    return "xx="+x+","+"yy="+y;

         }

}

覆盖toString方法

直接打印对象输出的结果会是这样的: [xx=2,yy=2, xx=5,yy=5, xx=3,yy=2]添加了一[]这两个

 

 

迭代器

 

Collection提供了一个iterator()可以返回一个迭代器接口!

可以认为迭代器就是两个元素的中间位置!

 

 

                    Iterator it = al.iterator();

                    while(it.hasNext())

                    {

                           System.out.println(it.next());

                    }

List没有真正实现remove方法

 

迭代器有一个好处就是通用性强,在各个集合类中都可以使用,只要是继承自Collection接口。

 

Collections而非接口CollectionCollections.sort()来排列

void sort(List<T> list);传入一个List接口

也可以传入一个比较器Compartor

 

void sort(List<T> list, Comparator<? super T> c)

传入一个比较器Comparator

比较器定义:

实现java.util
接口 Comparator<T>

方法摘要

 int

compare(T o1, T o2)
          比较用来排序的两个参数。

 boolean

equals(Object obj)
          指示某个其他对象是否“等于”此 Comparator。(可以不去实现…..)

 

实现compare方法,进行比较

可以将实现的比较器作为对象的内部类来声明,这样可以加强对象和比较器的联系

 

如果要对学生进行反序排列,可以通过reverseOrder返回一个比较器传入sort中来实现比较器。

 

LinkedList

addfirst(),addlast(),removefirst(),removelast():

LinkedList来实现Stack,Queue来实现

 

 

HashSet

HashSet是从Set继承而来的,不允许重复的元素

import java.util.HashSet;

import java.util.Iterator;

 

class HashSetTest

{

         public static void main(String[] args)

         {

                   HashSet<String> hs = new HashSet<String>();

                   hs.add("one");

                   hs.add("two");

                   hs.add("three");

                   hs.add("one");

                  

                   Iterator it = hs.iterator();

                   while(it.hasNext())

                   {

                            System.out.println(it.next());

                   }

         }

}

打印出来的是:

two

one

three

 

HashSet没有get方法,但是可以通过获取迭代器来获得!

 

如果将一对象插入到HashSet里面,那么就必须实现hashCode以及equalls方法,String类型的Hashcode是根据地址来作为散列的依据

实现Set接口的hash table(哈希表),依靠HashMap来实现的。

我们应该为要存放到散列表的各个对象定义hashCode()equals()。这样才能判断重复

public int hashCode()

   {

            return num*name.hashCode();

   }

   public boolean equals(Object o)

   {

            Student s=(Student)o;

            return num==s.num && name.equals(s.name);

   }

 

 

TreeSet

n  TreeSet是一个有序集合TreeSet中元素将按照升序排列,缺省是按照自然顺序进行排列,意味着TreeSet中元素要实现Comparable接口。

我们可以在构造TreeSet对象时,传递实现了Comparator接口的比较器对象

 

没有get方法,需要通过迭代器来实现!

 

TreeSet中的对象必须实现Comparable接口,或者传入一个比较器!

 

 

HashMap

键值对

可以通过put放入元素,get获得元素

可以通过keySet来获得健值

Values来获得

EntrySet来获得健值对,返回Map.Entry,可以果果这个类的getKey,getValue来获得值!

ashMap hm=new HashMap();

                   hm.put("one","zhangsan");

                   hm.put("two","lisi");

                   hm.put("three","wangwu");

                  

                   System.out.println(hm.get("one"));

                   System.out.println(hm.get("two"));

                   System.out.println(hm.get("three"));

                  

                  

                   Set keys=hm.keySet();

                   System.out.println("Key:");

                   printElements(keys);

                  

                   Collection values=hm.values();

                   System.out.println("Value:");

                   printElements(values);

                  

                   Set entry=hm.entrySet();

                   //printElements(entry);

                   Iterator it=entry.iterator();

                   while(it.hasNext())

                   {

                            Map.Entry me=(Map.Entry)it.next();

                            System.out.println(me.getKey()+":"+me.getValue());

                   }

 

 

TreeMap

TreeMapHashMap用法差不多

n  Set类似,HashMap的速度通常都比TreeMap快,只有在需要排序的功能的时候,才使用TreeMap

在多线程中为了获取安全的mao,set,list可以用过Collections的方法安全获取

 

Properties

继承自HashTable,获取当前系统输出流的属性

也可以用来读取配置文件

 

import java.util.*;

import java.io.*;

class PropTest

{

         public static void main(String[] args)

         {

                   Properties pps=new Properties();

                   try

                   {

                            pps.load(new FileInputStream("winsun.ini"));

                            Enumeration enum=pps.propertyNames();//返回一个每局类型,和迭代器差不多

                            while(enum.hasMoreElements())

                            {

                                     String strKey=(String)enum.nextElement();

                                     String strValue=pps.getProperty(strKey);//通过键值获得值

                                    

                                     System.out.println(strKey+"="+strValue);

                            }

                   }

                   catch(Exception e)

                   {

                            e.printStackTrace();

                   }

         }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值