List and Map 学习笔记

编写泛型类要注意:
1) 在定义一个泛型类的时候,在 “<>”之间定义形式类型参数,例如:“class TestGen<K,V>”,其中“K” , “V”不代表值,而是表示类型。
2) 实例化泛型对象的时候,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。例如:
TestGen<String,String> t=new TestGen<String,String>();
3) 泛型中<K extends Object>,extends并不代表继承,它是类型范围限制。

  很多地方用到LIST,Map这两个接口,现在把它的基本用法归纳起来(部分实现类的用法):

1, List

   JDK1.5.0说明:

(

   public interface List
 
 
  
     extends Collection
 
 

有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控  制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。

与 set 不同,列表通常允许重复的元素。更正式地说,列表通常允许满足 e1.equals(e2) 的元素对 e1e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。难免有人希望通过在用户尝试插入重复元素时抛出运行时异常的方法来禁止重复的列表,但我们希望这种用法越少越好。)

   1)Create List

   // Create the list
    List list = new LinkedList();    // Doubly-linked list
    list = new ArrayList();          // List implemented as growable array
    // Append an element to the list
    list.add("a");
    // Insert an element at the head of the list
    list.add(0, "b");
    // Get the number of elements in the list
    int size = list.size();          // 2
    // Retrieving the element at the end of the list
    Object element = list.get(list.size()-1);   // a
    // Retrieving the element at the head of the list
    element = list.get(0);                      // b
    // Remove the first occurrence of an element
    boolean b = list.remove("b");      // true
    b = list.remove("b");              // false
    // Remove the element at a particular index
    element = list.remove(0);          // a

   2)  Sorting a List

    // Create a list

String[] strArray = new String[] {"z", "a", "C"};
List list = Arrays.asList(strArray);

// Sort
Collections.sort(list);
// C, a, z

// Case-insensitive sort
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
// a, C, z

// Reverse-order sort
Collections.sort(list, Collections.reverseOrder());
// z, a, C

// Case-insensitive reverse-order sort
Collections.sort(list, String.CASE_INSENSITIVE_ORDER);
Collections.reverse(list);
// z, C, a
   3) Operating on ListsSee 
    // Create the lists

List list1 = new ArrayList();
List list2 = new ArrayList();

// Add elements to the lists ...

// Copy all the elements from list2 to list1 (list1 += list2)
// list1 becomes the union of list1 and list2
list1.addAll(list2);

// Remove all the elements in list1 from list2 (list1 -= list2)
// list1 becomes the asymmetric difference of list1 and list2
list1.removeAll(list2);

// Get the intersection of list1 and list2
// list1 becomes the intersection of list1 and list2
list1.retainAll(list2);

// Remove all elements from a list
list1.clear();

// Truncate the list
int newSize = 2;
list1.subList(newSize, list1.size()).clear();
    List的复制,可以用clone()方法,clone()是Object的方法.
     因此复制一个ArrayList,可以这样做:
  PreList=(List)((ArrayList)PrefixList).clone();
     PreList和Prefixlist都是ArrayListr的实例.
 2.Map
  JDK1.5.0说明:
( 
 
 
public interface Map

将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值。

此接口代替 Dictionary 类,后者完全是一个抽象类,而不是一个接口。

Map 接口提供三种collection 视图,允许以键集、值集合或键-值映射关系集的形式查看某个映射的内容。映射的顺序 定义为迭代器在映射的

collection 视图中返回其元素的顺序。某些映射实现可明确保证其顺序,如 TreeMap 类;某些映射实现则不保证顺序,如 HashMap 类. )

1)Create Map  
   Map map = new LinkedHashMap();

// Add some elements
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
map.put("2", "value4");

// List the entries
for (Iterator it=map.keySet().iterator(); it.hasNext(); ) {
Object key = it.next();
Object value = map.get(key);
}
// [1=value1, 2=value4, 3=value3]
  2) Operater Map
     Listing the Elements of a Collection
     // For a set or list

for (Iterator it=collection.iterator(); it.hasNext(); ) {
Object element = it.next();
}

// For keys of a map
for (Iterator it=map.keySet().iterator(); it.hasNext(); ) {
Object key = it.next();
}

// For values of a map
for (Iterator it=map.values().iterator(); it.hasNext(); ) {
Object value = it.next();
}

// For both the keys and values of a map
for (Iterator it=map.entrySet().iterator(); it.hasNext(); ) {
Map.Entry entry = (Map.Entry)it.next();
Object key = entry.getKey();
Object value = entry.getValue();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值