本文实例讲述了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); } }
addAll(index,x)
:从指定的位置开始,将集合x中的所有元素插入到此列表中。set(index, x)
用指定元素x替换列表中指定位置index的元素 。subList(fromIndex,toIndex)
:根据下标,从集合中取出元素,返回的是一个List 。listIterator()
:返回此列表中的元素的列表迭代器。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:
descendingIterator()
:返回逆序的迭代器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); } }
null
。entrySet()
:返回一个集合,集合中的对象都是包含键值对关系的entry类对象。HashMap:
TreeMap:
Properties:
getProperty(String key)
:用指定的键在此属性列表中搜索属性。load(InputStream inStream)
:从输入流中读取属性列表(键和元素对)。list(PrintStream out)
:将属性列表输出到指定的输出流。Map.Entry<K,V>
getValue()
:返回与此项对应的值。setValue(value)
:用指定的值替换与此项对应的值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()); } } }
reverseOrder()
:返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。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程序设计有所帮助。