java-LinkedList用法

Linkedlist,双向链表,优点,增加删除,用时间很短,但是因为没有索引,对索引的操作,比较麻烦,只能循环遍历,但是每次循环的时候,都会先判断一下,这个索引位于链表的前部分还是后部分,每次都会遍历链表的一半 ,而不是全部遍历。 在这里插入图片描述
在这里插入图片描述

构造方法

构造方法
LinkedList()构造一个空列表。
LinkedList(Collection<? extends E> c) )构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。
package first_package;
import java.util.*;
public class test_linklist {
	public static void main(String[] args){
		LinkedList<String> Lits = new LinkedList<String>();
		Lits.add("ccc");
		Lits.add("bbb");
		Lits.add("aaa");
		System.out.println("Linked list : " + Lits);
		for (String str: Lits) {  
		      System.out.println(str);  
		    } 
//		String[] y = Lits.toArray(new String[0]);
//		System.out.print(y);
		
		LinkedList<String> x = new LinkedList(Lits);
		System.out.println("Linked list : " + x);
		for (String str: x) {  
		      System.out.println(str);  
		    } 
	}

方法摘要

返回值函数作用
booleanadd(E e)将指定元素添加到此列表的结尾。
voidadd(int index, E element)在此列表中指定的位置插入指定的元素。
booleanaddAll(Collection<? extends E> c)添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。
booleanaddAll(int index, Collection<? extends E> c)将指定 collection 中的所有元素从指定位置开始插入此列表。
voidaddFirst(E e)将指定元素插入此列表的开头。
voidaddLast(E e)将指定元素添加到此列表的结尾。
voidclear()从此列表中移除所有元素。
objectclone()返回此 LinkedList 的浅表副本。
booleancontains(Object o)如果此列表包含指定元素,则返回 true。
IteratordescendingIterator()返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
package first_package;
import java.util.*;
public class test_linklist {
	public static void main(String[] args){
		LinkedList<String> Lits = new LinkedList<String>();
		Lits.add("ccc");
		Lits.add("bbb");
		Lits.add("aaa");
		Lits.add(2,"ddd");
		System.out.println("Linked List Elemet"+Lits);
		// 新的LinkedList
		LinkedList<String> test = new LinkedList();
		test.add("eee");
		test.addFirst("fff");
		test.addLast("ggg");
		System.out.println("test Linked List Elemet"+test);
		
		Lits.addAll(test);
		System.out.println("new Lits Linked List Elemet"+Lits);
		
		Lits.peek();
		System.out.println("peek Lits Linked List Elemet"+Lits);
		Lits.poll();
		System.out.println("poll Lits Linked List Elemet"+Lits);
		
	}
	
}

在这里插入图片描述

实战例题

在这里插入图片描述

package first_package;
import java.util.*;
public class test_linklist {
	public static void main(String[] args){
		
		Scanner in = new Scanner(System.in);
		int n = in.nextInt();
		int m = in.nextInt();
		LinkedList<Integer> l = new LinkedList<Integer>();
		
		for(int i = 1;i<n+1;i++){
			l.add(i);
		}
		int c,E1,E2,index1,index2,E;
		for(int j =0;j<m;j++){
			c = in.nextInt();
			if (c==1){
				E1 = in.nextInt();
				E2= in.nextInt();
				index1 = l.indexOf(E1);
				index2 = l.indexOf(E2);
				l.add(index2,E1);
				if(index1<index2){
					l.remove(index1);
				}
				else{
					l.remove(index1+1);
				}
				
			}
			else if(c==2){
				E1 = in.nextInt();
				E2= in.nextInt();
				index1  = l.indexOf(E1);
				index2 = l.indexOf(E2);
				l.add(index2+1,E1);
				if(index1<index2){
					l.remove(index1);
				}
				else{
					l.remove(index1+1);
				}
			}
			else if(c==3){
				E1 = in.nextInt();
				E2= in.nextInt();
				index1  = l.indexOf(E1);
				index2 = l.indexOf(E2);
				l.add(index1,E2);
				l.remove(index1+1);
				l.add(index2,E1);
				
				l.remove(index2+1);
				}
			
			else{
				LinkedList<Integer> r = new LinkedList<Integer>();
				for(int i=0;i<l.size();i++){
					E = l.get(l.size()-i-1);
					r.add(E);
					
				}
				l =r;
			}
			
		}
		int sum=0;
		int  sum_g =0;
		for(int i =0;i<l.size();i++){
			sum += l.get(i);
			if(i % 2==0){
				sum_g += l.get(i);
			}
		}
		if (l.size() %2==0){
			System.out.print(sum_g);
		}
		else{
			System.out.print(sum-sum_g);
		}
		
		
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值