diff --git a/src/main/java/com/pancm/basics/ListTest.java b/src/main/java/com/pancm/basics/ListTest.java index 41640dd..b863c96 100644 --- a/src/main/java/com/pancm/basics/ListTest.java +++ b/src/main/java/com/pancm/basics/ListTest.java @@ -1,292 +1,295 @@ -package com.pancm.basics; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Vector; -import java.util.stream.Collectors; - -/** - * -* @Title: ListTest -* @Description:关于list测试 -* @Version:1.0.0 -* @author pancm -* @date 2017年10月13日 - */ -public class ListTest { - - private final static int count=50000; - - private static ArrayList arrayList = new ArrayList<>(); - private static LinkedList linkedList = new LinkedList<>(); - private static Vector vector = new Vector<>(); - - - public static void main(String[] args) { -// test1(); -// test2(); -// test3(); - test4(); -// test5(); - - Vector v=new Vector<>(); - } - - - /** - * 遍历方法 - */ - private static void test1() { - List list=new ArrayList(); - list.add("a"); - list.add("b"); - list.add("c"); - - System.out.println("list截取:"+list.subList(0, 1)); - System.out.println("list截取:"+list.subList(1, 3)); - - - //第一种使用 - for(int i=0;i iterator=list.iterator(); - while(iterator.hasNext())//判断下一个元素之后有值 - { - System.out.println(iterator.next()); - } - } - - /** - * 数组变化遍历 - */ - private static void test2() { - - List list1 = new ArrayList(); - list1.add("1"); - list1.add("2"); - System.out.println("list1遍历之前:"+list1); - Iterator iterator = list1.iterator(); - while (iterator.hasNext()) { - String item = iterator.next(); - if ("2".equals(item)) { - iterator.remove(); - } - } - System.out.println("list1遍历之后:"+list1); - - List list = new ArrayList(); - list.add("1"); - list.add("2"); - System.out.println("list遍历之前:"+list); - for (String item : list) { - if ("2".equals(item)) { - list.remove(item); - //如果这里不适用break的话,会直接报错的 - break; - } - } - System.out.println("list遍历之后:"+list); - - - } - - - /** - * 常用方法 - */ - private static void test3() { - List list=initData(100); - System.out.println("list:"+list); - System.out.println("removeList:"+removeList(list,10,20)); - list.subList(10, 20).clear(); - System.out.println("subList:"+list); - - List ls1=new ArrayList(); - List ls2=new ArrayList(); - ls1.add("a"); - ls1.add("b"); - ls1.add("c"); - ls2.add("a"); - ls2.add("d"); - ls2.add("e"); -// System.out.println("合集:"+addAll(ls1,ls2)); - System.out.println("交集 :"+retainAll(ls1,ls2)); - System.out.println("差集 :"+removeAll(ls1,ls2)); - System.out.println("并集 :"+andAll(ls1,ls2)); - - } - - private static void test4() { - LinkedList list=new LinkedList(); - list.add(3); - list.add(5); - list.add(4); - System.out.println(list); - list.addFirst(2); - list.addLast(4); - System.out.println(list); - - LinkedList list2=new LinkedList(); - list2.add(1); - list2.add(2); - list2.add(4); - list2.add(4); - list2.add(6); - list2.add(6); - list2.add(5); - System.out.println("去重之前:"+list2); - //jdk1.8去重 - List newList = list2.stream().distinct().collect(Collectors.toList()); - System.out.println("去重之后:"+newList); - - } - - private static void test5() { - insertList(arrayList); - insertList(linkedList); - insertList(vector); - - System.out.println("--------------------"); - - readList(arrayList); - readList(linkedList); - readList(vector); - - System.out.println("--------------------"); - - delList(arrayList); - delList(linkedList); - delList(vector); - - } - - - private static void insertList(List list){ - long start=System.currentTimeMillis(); - Object o = new Object(); - for(int i=0;i removeList(List list,int s,int d){ - for(int i=0,j=list.size();i=s&&i initData(int j){ - List list=new ArrayList(); - for(int i=1;i<=j;i++){ - list.add(i); - } - return list; - } - - /** - * 数组合集 - * @param ls1 - * @param ls2 - * @return - */ - private static List addAll(List ls1,Listls2){ - ls1.addAll(ls2); - return ls1; - } - - /** - * 数组交集 (retainAll 会删除 ls1在ls2中没有的元素) - * @param ls1 - * @param ls2 - * @return - */ - private static List retainAll(List ls1,Listls2){ - System.out.println("ls1:"+ls1+";ls2:"+ls2); - ls1.retainAll(ls2); - return ls1; - } - - /** - * 差集 (删除ls2中没有ls1中的元素) - * @param ls1 - * @param ls2 - * @return - */ - private static List removeAll(List ls1,Listls2){ - ls1.removeAll(ls2); - System.out.println(ls1+";ls2:"+ls2); - return ls1; - } - - /** - * 无重复的并集 (ls1和ls2中并集,并无重复) - * @param ls1 - * @param ls2 - * @return - */ - private static List andAll(List ls1,Listls2){ - //删除在ls1中出现的元素 - ls2.removeAll(ls1); - //将剩余的ls2中的元素添加到ls1中 - ls1.addAll(ls2); - System.out.println(ls1+";ls2:"+ls2); - return ls1; - } -} +package com.pancm.basics; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Vector; +import java.util.stream.Collectors; + +/** + * +* @Title: ListTest +* @Description:关于list测试 +* @Version:1.0.0 +* @author pancm +* @date 2017年10月13日 + */ +public class ListTest { + + private final static int count=50000; + + private static ArrayList arrayList = new ArrayList<>(); + private static LinkedList linkedList = new LinkedList<>(); + private static Vector vector = new Vector<>(); + + + public static void main(String[] args) { +// test1(); +// test2(); + test3(); +// test4(); +// test5(); + + + Vector v=new Vector<>(); + } + + + /** + * 遍历方法 + */ + private static void test1() { + List list=new ArrayList(); + list.add("a"); + list.add("b"); + list.add("c"); + + System.out.println("list截取:"+list.subList(0, 1)); + System.out.println("list截取:"+list.subList(1, 3)); + + + //第一种使用 + for(int i=0;i iterator=list.iterator(); + while(iterator.hasNext())//判断下一个元素之后有值 + { + System.out.println(iterator.next()); + } + } + + /** + * 数组变化遍历 + */ + private static void test2() { + + List list1 = new ArrayList(); + list1.add("1"); + list1.add("2"); + System.out.println("list1遍历之前:"+list1); + Iterator iterator = list1.iterator(); + while (iterator.hasNext()) { + String item = iterator.next(); + if ("2".equals(item)) { + iterator.remove(); + } + } + System.out.println("list1遍历之后:"+list1); + + List list = new ArrayList(); + list.add("1"); + list.add("2"); + System.out.println("list遍历之前:"+list); + for (String item : list) { + if ("2".equals(item)) { + list.remove(item); + //如果这里不适用break的话,会直接报错的 + break; + } + } + System.out.println("list遍历之后:"+list); + + + } + + + /** + * 常用方法 + */ + private static void test3() { + List list=initData(100); + System.out.println("list:"+list); + System.out.println("removeList:"+removeList(list,10,20)); + list.subList(10, 20).clear(); + System.out.println("subList:"+list); + + List ls1=new ArrayList(); + List ls2=new ArrayList(); + ls1.add("a"); + ls1.add("b"); + ls1.add("c"); + ls2.add("a"); + ls2.add("b"); + ls2.add("c"); + ls2.add("e"); +// System.out.println("合集:"+addAll(ls1,ls2)); +// System.out.println("交集 :"+retainAll(ls1,ls2)); + System.out.println("差集 :"+removeAll(ls2,ls1)); +// System.out.println("并集 :"+andAll(ls1,ls2)); + + } + + private static void test4() { + LinkedList list=new LinkedList(); + list.add(3); + list.add(5); + list.add(4); + System.out.println(list); + list.addFirst(2); + list.addLast(4); + System.out.println(list); + + LinkedList list2=new LinkedList(); + list2.add(1); + list2.add(2); + list2.add(4); + list2.add(4); + list2.add(6); + list2.add(6); + list2.add(5); + System.out.println("去重之前:"+list2); + //jdk1.8去重 + List newList = list2.stream().distinct().collect(Collectors.toList()); + System.out.println("去重之后:"+newList); + + } + + private static void test5() { + insertList(arrayList); + insertList(linkedList); + insertList(vector); + + System.out.println("--------------------"); + + readList(arrayList); + readList(linkedList); + readList(vector); + + System.out.println("--------------------"); + + delList(arrayList); + delList(linkedList); + delList(vector); + + } + + + private static void insertList(List list){ + long start=System.currentTimeMillis(); + Object o = new Object(); + for(int i=0;i removeList(List list,int s,int d){ + for(int i=0,j=list.size();i=s&&i initData(int j){ + List list=new ArrayList(); + for(int i=1;i<=j;i++){ + list.add(i); + } + return list; + } + + /** + * 数组合集 + * @param ls1 + * @param ls2 + * @return + */ + private static List addAll(List ls1,Listls2){ + ls1.addAll(ls2); + return ls1; + } + + /** + * 数组交集 (retainAll 会删除 ls1在ls2中没有的元素) + * @param ls1 + * @param ls2 + * @return + */ + private static List retainAll(List ls1,Listls2){ + System.out.println("ls1:"+ls1+";ls2:"+ls2); + ls1.retainAll(ls2); + return ls1; + } + + /** + * 差集 (删除ls2中没有ls1中的元素) + * @param ls1 + * @param ls2 + * @return + */ + private static List removeAll(List ls1,Listls2){ + System.out.println("ls1:"+ls1+";ls2:"+ls2); + ls1.removeAll(ls2); + return ls1; + } + + /** + * 无重复的并集 (ls1和ls2中并集,并无重复) + * @param ls1 + * @param ls2 + * @return + */ + private static List andAll(List ls1,Listls2){ + //删除在ls1中出现的元素 + ls2.removeAll(ls1); + //将剩余的ls2中的元素添加到ls1中 + ls1.addAll(ls2); + System.out.println(ls1+";ls2:"+ls2); + return ls1; + } +}