List:繼承Collection,List元素是有序的,因爲List有索引因此元素能夠重複。經常使用的實現類有ArrayList(數據結構使用數組,查詢速度快,增刪很慢,線程不一樣步),LinkedList(數據結構使用鏈表,查詢很慢,增刪較快),Vector(數據結構使用數組,查詢和增刪都較慢,基本被ArrayList替代)。java
使用Set去重數組
Set<Integer> set = new HashSet<>(list);
②用JDK1.8 Stream中對List進行去重,首先得到此list的Stream.而後調用distinct()方法,java8中提供流的方式對數據進行處理,很是快,底層用的是forkJoin框架,提供了並行處理,使得多個處理器同時處理流中的數據,因此耗時很是短。數據結構
List<String> unique = list.stream().distinct().collect(Collectors.toList());
private Integer id; private String userName; private Integer age; private String address;
重寫equals()和hashcode()框架
@Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; User other = (User) obj; if (address == null) { if (other.address != null) return false; } else if (!address.equals(other.address)) return false; if (age == null) { if (other.age != null) return false; } else if (!age.equals(other.age)) return false; if (userName == null) { if (other.userName != null) return false; } else if (!userName.equals(other.userName)) return false; return true; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((address == null) ? 0 : address.hashCode()); result = prime * result + ((age == null) ? 0 : age.hashCode()); result = prime * result + ((userName == null) ? 0 : userName.hashCode()); return result; }
public class Test { public static void main(String[] args) { User u1=new User(1,"aaa",1,"shanghai"); User u2=new User(2,"bbb",2,"beijing"); User u3=new User(1,"aaa",1,"shanghai"); List<User> list=new ArrayList<User>(); List<User> personList =new ArrayList<User>(); list.add(u1); list.add(u2); list.add(u3); // 去重 list.stream().forEach( u -> { if (!personList.contains(u)) { personList.add(u); } } ); System.out.println(personList); }
還有一種比較炫酷的寫法。dom
package test; import java.util.ArrayList; import java.util.List; import java.util.TreeSet; import static java.util.Comparator.comparingInt; import static java.util.stream.Collectors.toCollection; import static java.util.stream.Collectors.collectingAndThen; public class Test { public static void main(String[] args) { User u1=new User(1,"aaa",1,"shanghai"); User u2=new User(2,"bbb",2,"beijing"); User u3=new User(1,"aaa",1,"shanghai"); List<User> list=new ArrayList<User>(); list.add(u1); list.add(u2); list.add(u3); // 去重 List<User> unique = list.stream().collect( collectingAndThen( toCollection(() -> new TreeSet<>(comparingInt(User::getId))), ArrayList::new) ); System.out.println(unique); } }
public class Test { public static void main(String[] args) throws Exception{ User u1=new User("aaa","ds",22); User u2=new User("asa","qdfdss",23); User u3=new User("sd","sdsdv",24); User u4=new User("as","fds",23); User u5=new User("rfd","fds",26); User u6=new User("aaa","gbfdv"); List<User> list=new ArrayList<>(); list.add(u1); list.add(u2); list.add(u3); list.add(u4); list.add(u5); list.add(u6); List<User> list2=new ArrayList<>(); //獲取指定屬性的集合 List<Integer> collect = list.stream() .map(User::getAge).filter(x -> x ==23).collect(Collectors.toList()); System.out.println(JSON.toJSON(collect)); //獲取指定的對象集合 list.stream().forEach( u -> { if (u.getAge()==null) { list2.add(u); } } ); System.out.println(JSON.toJSON(list2)); List<User> list3 = list.stream() .filter(user -> "aaa".equals(user.getName())) .collect(Collectors.toList()); System.out.println(JSON.toJSON(list3)); } }
public class User implements Comparable<User>{ ... @Override public int compareTo(User o) { return this.id.compareTo(o.getId()); } } list.sort(Comparator.naturalOrder()); Collections.sort(list);
public class Test { public static void main(String[] args) { List<Integer> list=new ArrayList<Integer>(); for(int i=0;i<14;i++) { list.add(i+1); } int m = 0; while(list.size() > 1) { for (int j=0; j<list.size(); j++) { m++; if (m%3 == 0) { System.out.println(list.remove(j)+"號離開"); j--; m = 0; } } } System.out.println(list); } }
public class Test { public static void main(String[] args) { List<String> list=getList(); int length = 0,index,index2; Random random=new Random(); for(int i=0;i<25;i++) { while(true) { index=random.nextInt(50-length); index2=random.nextInt(50-length); if(index!=index2) { break; } } System.out.println("第"+i+"組:"+list.get(index)+","+list.get(index2)); list.remove(index); if(index>index2){ list.remove(index2); }else { list.remove(index2-1); } length=length+2; } } public static List<String> getList() { List<String> list=new ArrayList<String>(); for(int i=0;i<50;i++) { list.add(i+1+""); } return list; } }