Android之JAVASe基础篇-面向对象-类集(十)
2015-12-31 17:57
411 查看
前言–java类集是开发中用得最多的了吧,方便,功能强。
一、类集框架主要接口
接口的继承关系:
1.List接口—List中允许有重复的数据
List
1.1.LinkedList
LinkedList:表示的是一个链表的操作类.
1.2Queue接口:是Collection的子接口,定义如下:public interface Queue extends Collection
2.Set接口–不能加入重复的元素
Set接口常用的子类:
2.1散列存放(无序):HashSet
深入:使用hashCode(),equals(),取消掉重复元素,
一、类集框架主要接口
接口的继承关系:
1.List接口—List中允许有重复的数据
List
class Student{ private String name; private String age; //无参和有参的构造 getter/setter... } public class Test{ public static void main(String[] args){ Collection<Student> c=new ArrayList<Student>(); c.add(new Student("刘欢",10));//Object obj=new Student("刘欢",10); c.add(new Student("赵四",11)); c.add(new Student("王五",12)); //把集合转为数组 Object[] o=c.toArray(); for(int i=0;i<o.length;i++){ System.out.println(o[i]); //如果要根据集合中的名字取值则: Student s=(Student)o[i];//向下转型即可 System.out.println("姓名:"s.getName()+'\t'+"年龄:"+s.getAge()); } //直接使用迭代(遍历)输出 Iterator it=c.iterator(); if(it.hasNext()){ System.out.println(it.next());//遍历输出 //如果想直接输出名字或者年龄,则需要向下转型 Student stu=(Student)it.next(); System.out.println("姓名:"stu.getName()+'\t'+"年龄:"+stu.getAge()); } } }
1.1.LinkedList
LinkedList:表示的是一个链表的操作类.
import java.util.LinkedList ; public class LinkedListDemo02{ public static void main(String args[]){ LinkedList<String> link = new LinkedList<String>() ; link.add("A") ; // 增加元素 link.add("B") ; // 增加元素 link.add("C") ; // 增加元素 System.out.println("1-1、element()方法找到表头:" + link.element()) ; System.out.println("1-2、找完之后的链表的内容:" + link) ; System.out.println("2-1、peek()方法找到表头:" + link.peek()) ; System.out.println("2-2、找完之后的链表的内容:" + link) ; System.out.println("3-1、poll()方法找到表头:" + link.poll()) ; System.out.println("3-2、找完之后的链表的内容:" + link) ; } };
1.2Queue接口:是Collection的子接口,定义如下:public interface Queue extends Collection
import java.util.LinkedList ; public class LinkedListDemo03{ public static void main(String args[]){ LinkedList<String> link = new LinkedList<String>() ; link.add("A") ; // 增加元素 link.add("B") ; // 增加元素 link.add("C") ; // 增加元素 System.out.print("以FIFO的方式输出:") ; for(int i=0;i<=link.size()+1;i++){ System.out.print(link.poll() + "、") ; } } };
2.Set接口–不能加入重复的元素
Set接口常用的子类:
2.1散列存放(无序):HashSet
import java.util.HashSet ; import java.util.Set ; public class HashSetDemo01{ public static void main(String args[]){ Set<String> allSet = new HashSet<String>() ; allSet.add("A") ; // 增加内容 allSet.add("B") ; // 增加内容 allSet.add("C") ; // 增加内容 allSet.add("C") ; // 重复内容 allSet.add("C") ; // 重复内容 allSet.add("D") ; // 增加内容 allSet.add("E") ; // 增加内容 System.out.println(allSet) ; } };
2.2有序存放(可自动排序):TreeSet
import java.util.TreeSet ; import java.util.Set ; public class TreeSetDemo01{ public static void main(String args[]){ Set<String> allSet = new TreeSet<String>() ; allSet.add("C") ; // 增加内容 allSet.add("C") ; // 重复内容 allSet.add("C") ; // 重复内容 allSet.add("D") ; // 增加内容 allSet.add("B") ; // 增加内容 allSet.add("A") ; // 增加内容 allSet.add("E") ; // 增加内容 System.out.println(allSet) ; } };
深入:使用hashCode(),equals(),取消掉重复元素,
import java.util.Set ; import java.util.HashSet ; class Person{ private String name ; private int age ; public Person(String name,int age){ this.name = name ; this.age = age ; } public boolean equals(Object obj){ // 覆写equals,完成对象比较 if(this==obj){ return true ; } if(!(obj instanceof Person)){ return false ; } Person p = (Person)obj ; // 向下转型 if(this.name.equals(p.name)&&this.age==p.age){ return true ; }else{ return false ; } } public int hashCode(){ return this.name.hashCode() * this.age ; // 定义一个公式 } public String toString(){ return "姓名:" + this.name + ";年龄:" + this.age ; } }; public class RepeatDemo02{ public static void main(String args[]){ Set<Person> allSet = new HashSet<Person>() ; allSet.add(new Person("张三",30)) ; allSet.add(new Person("李四",31)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("王五",32)) ; allSet.add(new Person("赵六",33)) ; allSet.add(new Person("孙七",33)) ; System.out.println(allSet) ; } };
相关文章推荐
- Android Studio Plugins
- android 模拟抢红包 原理
- Android开源之五---优秀个人和团体篇
- android开源库之四---测试工具篇
- Android开源项目之二---工具库篇
- android 显示百度地图的静态图片
- Android开源之优秀项目篇
- gitub优秀的android开源项目
- Android上实现仿IOS弹性ScrollView
- Android对Bitmap的内存优化方案总结
- Android声音录制和播放
- android开发水波纹效果实现
- Android下拉框的实现
- android studio系列之各种快捷方式
- android sdcard存储方案三(基于fuse文件系统):
- Android基础之Activity
- Android 使用NDK编写 基于C层的守护进程
- android瀑布流效果(仿蘑菇街)
- phonegap(cordova) 自定义插件代码篇(二)----android 自动更新
- android_自动检测更新