首页 > 代码库 > java集合框架03

java集合框架03

public class News implements Comparable {
	private int id;  //新闻编号
	private String title;  //新闻标题
	
	@Override
	public String toString() {
		return "新闻 [编号=" + id + ", 标题=" + title + "]";
	}
	
	public News() { //无参构造
		super();
	}
	public News(int id, String title) { //带参构造
		super();  
		this.id = id;
		this.title = title;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}

	//重写 排序的规则    升序
	@Override
	public int compareTo(Object o) {
		  News news=(News) o;
		  if (news.getId()==this.id) {
			return 0;
		 }else if (news.getId()<this.id) {
			return 1;  // 降序  return -1;
		}else {
			return -1; // 降序  return 1;
		}
	}
}


public class CollectionsTest {

	public static void main(String[] args) {
		/*
		 * 操作集合的工具类Collections
		 * 
		 */
		//创建一个集合
		List<String> list=new ArrayList<String>();
		list.add("b");
		list.add("d");
		list.add("c");
		list.add("a");
		System.out.println("没有排序====》"+list);  //插入时候的顺序
		//对集合进行随机排序
		Collections.shuffle(list);
		//开奖号码   136  顺序必须对      631不对 
		System.out.println("随机排序====》"+list);
		//按照字母的升序排列
		Collections.sort(list); 
		System.out.println("升序====》"+list); 
		//降序  也是必须在升序之后
		Collections.reverse(list);
		System.out.println("降序====》"+list); 
		//查询 "b"在集合中的位置  必须先升序 排列之后再查询
		Collections.sort(list); 
		System.out.println(Collections.binarySearch(list, "a"));
		System.out.println("****************************");
		List<News> news=new ArrayList<News>();  //想实现对象的排序
		news.add(new News(3, "新闻3"));
		news.add(new News(1, "新闻1"));
		news.add(new News(4, "新闻4"));
		news.add(new News(2, "新闻2"));
		for (News news2 : news) {
			System.out.println(news2);
		}
		/*
		 * 如果News没有重写Comparable接口中的compareTo()是编译报错的!
		 * 我们必须重写compareTo() 定义规则
		 */
		Collections.sort(news);
		System.out.println("对象排序之后.........");
		for (News news2 : news) {
			System.out.println(news2);
		}
	}
	
	@Test
	public  void  test1(){
		//通过String类中的split()把字符串转换成字符串数组
		String[] str1="a b c d d d".split(" ");
		//把数组转换成集合
		List<String> asList = Arrays.asList(str1);
		System.out.println(asList);
		String[] str2="c d".split(" ");
		List<String> asList2= Arrays.asList(str2);
		//最后一次出现的位置
		System.out.println(Collections.lastIndexOfSubList(asList, asList2));
		//首次出现的位置
		System.out.println(Collections.indexOfSubList(asList, asList2));
	}
	
	@Test
	public  void  test2(){
		String[] str1="a b c d e f".split(" ");
		//把数组转换成集合
		List<String> list = Arrays.asList(str1);
		System.out.println(list);
		//集合中的元素向后移distance个位置,之后被覆盖的元素循环前移
		Collections.rotate(list, 2);
		System.out.println(list);
	}
}

  

java集合框架03