List / Map / Collections

LinkedList可以根据索引来访问集合中的元素,此外还实现了Deque接口,所以也可以当成双端队列来使用,即可当“栈”(先进后出),也可以当作队(先进先出);内部是以线性表和链表实现的,保证输入的顺序。通常用Iterator遍历。
示例:

public class LinkedListDemo {  

    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        LinkedList<String> list = new LinkedList<String>();  
        list.add("哈哈");  
        list.add("呵呵");  
        list.add("嘿嘿");  
        print(list);  

        list.addFirst("嘻嘻");//链表可以在头或尾插入  
        print(list);  
        //将元素加入到对头  
        list.offerFirst("来来");  
        //将元素加入到队尾  
        list.offerLast("去去");  
        print(list);  
        //访问并不删除栈顶  
        System.out.println("访问并不删除栈顶----" +list.peekFirst());  
        print(list);  
        //访问并删除栈顶  
        System.out.println("访问并删除栈顶----" + list.poll());  
        print(list);  

    }  

    public static void print(List list){  
        Iterator iterator = list.iterator();  
        while(iterator.hasNext()){  
            System.out.print(iterator.next() + " ");  
        }  
        System.out.println();  
    }  

}  

注意:LinkedList在进行删除、插入操作时性能更优,而ArrayList在遍历的时候应能更优。

LinkedHashMap
LinkedHashMap也是使用双向链表来维护key-value,保证迭代顺序与key-value对的插入顺序一直。
示例:

public class LinkedHashMapDemo {  

    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        LinkedHashMap<Integer, String> map = new LinkedHashMap<Integer,String>();  
        map.put(12, "吃饭");  
        map.put(14, "睡觉");  
        map.put(13, "打豆豆");  
        map.put(11, "刷牙");  
        map.put(15, "上厕所");  


        //第一种遍历方式keySet()  
        Set<Integer> keySet = map.keySet();  
        Iterator<Integer> i = keySet.iterator();  
        while(i.hasNext()){  
            Integer key = i.next();  
            System.out.println("键是:" + key + "值是:" + map.get(key));  
        }  



    }  

}  

collections查找替换操作
示例:

public class Demo10 {  
    public static void main(String[] args) {  
        List list = new ArrayList<Integer>();  
        list.add(4);  
        list.add(3);  
        list.add(12);  
        list.add(-9);  

        //自然排序  
        Collections.sort(list);  
        print(list);  

        //查找、替换  
        System.out.println("最大元素是:" + Collections.max(list));  
        System.out.println("4的索引是:" + Collections.binarySearch(list, 4));  
        System.out.println("替换所有的元素:" );  
        Collections.fill(list, 1);  
        print(list);  



    }  
    public static void print(List<Integer> arr){  
        for(Integer str:arr){  
            System.out.print(str + " ");  
        }  
        System.out.println();  
    }  

}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值