本文实例讲述了Java集合功能与用法。分享给大家供大家参考,具体如下:
首发日期:2018-05-17
PS:
集合的获取依赖于迭代器Iterator。
package 集合; import java.util.ArrayList; import java.util.Iterator; public class IteratorDemo { public static void main(String[] args) { ArrayList q=new ArrayList(); //增 q.add("a"); q.add("b"); q.add("c"); q.add("d"); //使用迭代器迭代 for(Iterator it=q.iterator();it.hasNext();) { Object obj=it.next(); System.out.println(obj);//a b c d if(obj=="a") it.remove(); } //删除后查看一下 System.out.println(q); } }
ArrayList:
import java.util.ArrayList; import java.util.Iterator; public class ListDemo { public static void main(String[] args) { ArrayList q=new ArrayList(); //增 q.add("a"); q.add("b"); ArrayList a=new ArrayList(); a.addAll(q); a.add("c"); a.add("d"); System.out.println(a);//[a, b, c, d],实现了toString,所以可以直接打印出来。 //删 // a.remove("a"); a.remove(0); //查 System.out.println(a.size());//3 System.out.println(a.contains("b"));//true System.out.println(a.isEmpty());//false System.out.println(a);//[b, c, d] //改 a.set(0, "bag"); System.out.println(a); //使用迭代器迭代 for(Iterator it=a.iterator();it.hasNext();) { System.out.println(it.next());//c d } } }
LinkedList:
HashSet:
TreeSet:
LinkHashSet:
import java.util.HashSet; import java.util.Set; class Student{ String name; int age; Student(String name,int age){ this.name=name; this.age=age; } public String toString() {//重写方法,以便sysout能输出 return "Student [name=" + name + ", age=" + age + "]"; } public int hashCode() {//这里使用的是自动生成的代码,也可以使用自己的规则 final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } public boolean equals(Object obj) {//这里使用的是自动生成的代码,也可以使用自己的规则 if (this == obj)//如果两个地址相同,返回true 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; } } public class HashSetDemo { public static void main(String[] args) { Set s=new HashSet(); // s.add("abc"); // s.add("abc"); // System.out.println(s);//这里因为可以使用自带的判断方法,所以不会发生重复 // s.add(new Student("lilei",18)); // s.add(new Student("lilei",18)); // System.out.println(s);//这里因为判断两个地址是不同的,所以会重复。 // 在重写equals之后: s.add(new Student("lilei",18)); s.add(new Student("lilei",18)); System.out.println(s);//不发生重复。 } }
import java.util.TreeSet; class Student2 implements Comparable{ String name; int age; Student2(String name,int age){ this.name=name; this.age=age; } public int compareTo(Object o) { Student2 stu=(Student2)o; return this.name.equals(stu.name)?this.age-stu.age:this.name.compareTo(stu.name); //默认按姓名排序,如果有重复的姓名,按年龄排序。认为同名同年龄为同一元素 } @Override public String toString() { return "Student2 [name=" + name + ", age=" + age + "]"; } } public class TreeSetDemo { public static void main(String[] args) { TreeSet t=new TreeSet(); // t.add("a"); // t.add("c"); // t.add("d"); // t.add("b"); // System.out.println(t);//对于非自定义对象,可以排序[a, b, c, d] t.add(new Student2("lilei",18)); t.add(new Student2("lilei",17)); t.add(new Student2("hanmeimei",18)); t.add(new Student2("john",17)); t.add(new Student2("mike",27)); t.add(new Student2("alice",21)); System.out.println(t); } }
import java.util.Comparator; import java.util.TreeSet; class CompareByLength implements Comparator{ public int compare(Object o1, Object o2) { Student3 stu1=(Student3)o1; Student3 stu2=(Student3)o2; return stu1.name.length()-stu2.name.length(); // 注意,这里也与compareTo类似,定义的规则必须要考虑到重复性,不然会导致属性值相同的元素 // 认为是同一元素 } } class Student3 { String name; int age; Student3(String name,int age){ this.name=name; this.age=age; } public String toString() { return "Student2 [name=" + name + ", age=" + age + "]"; } } public class TreeSetDemo2 { public static void main(String[] args) { TreeSet t=new TreeSet(new CompareByLength()); t.add(new Student3("aaa",18)); t.add(new Student3("a",18)); // t.add(new Student3("d",18));//这里是元素重复性的检测,原因在compare t.add(new Student3("aa",17)); t.add(new Student3("cccccccccc",17)); System.out.println(t); } }
HashMap:
TreeMap:
Properties:
public class MapDemo { public static void main(String[] args) { Map m=new HashMap(); m.put("hanmeimei", "lilei"); m.put("wodeta", "wo"); m.put("apple", "google"); Set s=m.entrySet(); for(Iterator it=s.iterator();it.hasNext();) { Map.Entry me=(Entry) it.next(); System.out.println(me.getKey()+"...."+me.getValue()); } } }
import java.util.ArrayList; import java.util.Collections; public class ListDemo2 { public static void main(String[] args) { ArrayList q=new ArrayList(); q.add("a"); q.add("z"); q.add("b"); q.add("c"); System.out.println(Collections.max(q)); System.out.println(q); Collections.sort(q); System.out.println(q); } }
想了解更多,可以自行查看jdk文档。
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。