集合的遍历方式与去重
1.List集合的遍历方法
public class ListDemo1 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
String s1="白眉鹰王";
String s2="青翼蝠王";
String s3="金毛狮王";
String s4="紫衫龙王";
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
Object[]obj=list.toArray();
for(int x=0;x<obj.length;x++) {
String s=(String) obj[x];
System.out.println(s);
}
System.out.println("------------------");
Iterator<String> it =list.iterator();
while(it.hasNext()) {
String s=it.next();
System.out.println(s);
}
System.out.println("---------------------");
for(int x=0;x<list.size();x++) {
String s=list.get(x);
System.out.println(s);
}
System.out.println("-------------------------");
ListIterator<String> lis=list.listIterator();
while(lis.hasNext()) {
String s=lis.next();
System.out.println(s);
}
System.out.println("-----------------------------");
for(String s:list) {
System.out.println(s);
}
}
}
1.1集合的去重
import com.java_01.Student;
public class ListDemo {
public static void main(String[] args) {
List <Student> list=new ArrayList<Student>();
Student s1=new Student("白眉鹰王",35);
Student s2=new Student("青翼蝠王",32);
Student s3=new Student("金毛狮王",38);
Student s4=new Student("紫衫龙王",31);
Student s5=new Student("白眉鹰王",37);
Student s6=new Student("青翼蝠王",32);
Student s7=new Student("金毛狮王",38);
Student s8=new Student("紫衫龙王",31);
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
list.add(s6);
list.add(s7);
list.add(s8);
创建新的集合
List<Student>list2=new ArrayList<Student>();
Iterator<Student>it=list.iterator();
while(it.hasNext()) {
Student st=it.next();
if(!list2.contains(st)) {
list2.add(st);
}
}
Iterator<Student>it1=list2.iterator();
while(it1.hasNext()) {
Student s=it1.next();
System.out.println(s.getName()+"-"+s.getAge());
}
System.out.println("----------------------------");
通过equals判断
for(int x=0;x<list.size()-1;x++) {
for(int y=x+1;y<list.size();y++) {
if(list.get(x).equals(list.get(y))) {
list.remove(y);
y--;
}
}
}
Iterator<Student>ite=list.iterator();
while(ite.hasNext()) {
Student ss=ite.next();
System.out.println(ss.getName()+"-"+ss.getAge());
}
}
}
2.Set的遍历方法以及去重
1.TreeSet的遍历方式:
注://TreeSet遍历时,需要在资源类实现Comparable<>接口方法
主代码块:
public class TreesetDemo {
public static void main(String[] args) {
TreeSet<Student> ts =new TreeSet<Student>();
Student s1=new Student("张三丰",65);
Student s2=new Student("丘处机",53);
Student s3=new Student("王重阳",45);
ts.add(s1);
ts.add(s2);
ts.add(s3);
for(Student s:ts) {
System.out.println(s.getName()+"-"+s.getAge());
}
}
}
学生类代码块:
public class Student implements Comparable<Student> {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [" + (name != null ? "name=" + name + ", " : "") + "age=" + age + "]";
}
@Override
public int compareTo(Student s) {
int num = this.age - s.age ;
int num2 = (num==0)? (this.name.compareTo(s.name)): num ;
return num2 ;
}
2.HashSet的遍历方法:
注:
主代码块:
public class HashsetDemo {
public static void main(String[] args) {
Set<Student> ht = new HashSet<Student>();
Student s1=new Student("张三丰",65);
Student s2=new Student("丘处机",53);
Student s3=new Student("王重阳",45);
Student s4=new Student("张三丰",65);
ht.add(s1);
ht.add(s2);
ht.add(s3);
ht.add(s4);
for(Student s:ht) {
System.out.println(s.getName()+"-"+s.getAge());
}
}
}
学生代码块:
public class Student implements Comparable<Student> {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
3.Map的遍历方法
方式1:(推荐的方式:Map常用的方式)
Set<K> keySet():获取所有的键的集合
V get(Object key):通过键获取对应的值
遍历Map集合方式1:
方式1:Set<K> keySet():获取所有的键的集合
Set<String> set = map.keySet() ;
for(String key : set) {
V get(Object key):通过键获取对应的值
String value = map.get(key) ;
System.out.println(key+"="+value);
}
例:
Map<String,String> map=new HashMap<String,String>();
map.put("郭靖", "黄蓉");
map.put("杨过", "小龙女");
map.put("张无忌", "赵敏");
Set<String> set=map.keySet();
for(String key:set) {
String value=map.get(key);
System.out.println(key+"-"+value);
}
遍历Map集合方式2:
方式2遍历
Set<Map.Entry<K,V>> entrySet():获取当前Map集合中所有的键值对对象
K getKey() :通过键值对对象获取键
V getValue():通过键值对对象获取值
获取所有的键值对对象
Set<Map.Entry<String, String>> entrySet = map.entrySet() ;
for(Map.Entry<String, String> entry :entrySet) {
String key = entry.getKey() ;
String value = entry.getValue() ;
System.out.println(key+"="+value);
}
例:
Map<String,String> map=new HashMap<String,String>();
map.put("郭靖", "黄蓉");
map.put("杨过", "小龙女");
map.put("张无忌", "赵敏");
Set<Map.Entry<String,String>> set=map.entrySet();
for(Map.Entry<String,String> entry:set) {
String key=entry.getKey();
String value=entry.getValue();
System.out.println(key+"-"+value);
}