`
bearsorry
  • 浏览: 93588 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

集合框架

 
阅读更多
排序和去重器:
package 排序与去重;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JComboBox;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import netjava.lc.Set0728.Student;

public class SortListener implements ActionListener{

	//所要用到的属性
	JTextField field;
	JComboBox box;
	JTextArea text;
	int count;
	String command;
	Random ran = new Random();
	static List<Student> list = new ArrayList<Student>();
	
	public SortListener(JTextField field,JComboBox box,JTextArea text){
		this.field = field;
		this.box = box;
		this.text = text;
	}
	
	
	public void actionPerformed(ActionEvent e){
		count = Integer.valueOf(field.getText());
		command = (String)box.getSelectedItem();
		
		String s = e.getActionCommand();
		if("生成".equals(s)){
			list = createList(count);
			printElement(list);
			text.append("====================================="+"\n");
		}if("排序".equals(s)){
//			System.out.println("按钮:排序");
//			System.out.println("下拉框里面的值是:"+command);
			if(command.equals("升序")){
				list = sort1(list);
				printElement(list);
			}if(command.equals("降序")){
				list = sort2(list); 
				printElement(list);
			}
			text.append("======================================="+"\n");
		}if("去重".equals(s)){
			list = modifyList(list);
			printElement1(list);
			text.append("====================================="+"\n");
		}
	}
	
	// 产生一个乱序的list集合
	public List<Student> createList(int count) {
		List list = new ArrayList();
		for (int i = 0; i < count; i++) {
			int j = ran.nextInt(5);
//			Student stu = new Student("学生" , 1,1);
			Student stu = new Student("学生" + (char)(j+65), j,1);
			list.add(stu);
		}
		return list;
	}
	
	// 输出list集合
	public void printElement(List<Student> list) {
		for (int i = 0; i < list.size(); i++) {
			// 我们已知List中放的是userInfo对象
			Student us = list.get(i);
			text.append("姓名:" + us.getName() + "    学分为:" + us.getScore() + "   身份证:" +us.getId()+"\n");
		}
	}
	
	

	// 升序排序的方法
	public List<Student> sort1(List<Student> list) {
		// List list = new ArrayList();
		for (int i = list.size(); i > 0; i--) {
			for (int j = 0; j < i - 1; j++) {
				// Student stu = list.get(i);
				if (list.get(j).getScore() > list.get(j + 1).getScore()) {
					Student stu1;
					stu1 = list.get(j);
					list.set(j, list.get(j + 1));
					// list.get(i) = list.get(i+1);
					list.set(j + 1, stu1);
				}
			}
		}
		return list;
	}
	

	// 降序排序的方法
	public List<Student> sort2(List<Student> list) {
		// List list = new ArrayList();
		for (int i = list.size(); i > 0; i--) {
			for (int j = 0; j < i - 1; j++) {
				// Student stu = list.get(i);
				if (list.get(j).getScore() < list.get(j + 1).getScore()) {
					Student stu1;
					stu1 = list.get(j);
					list.set(j, list.get(j + 1));
					// list.get(i) = list.get(i+1);
					list.set(j + 1, stu1);
				}
			}
		}
		return list;
	}
	
	// 去掉重复的方法
	public List<Student> modifyList(List<Student> list) {
		for (int i = 0; i < list.size() - 1; i++) {
			for (int j = i + 1; j < list.size(); j++) {
				if (list.get(i).getScore() == list.get(j).getScore()
						&& list.get(i).getName().equals(list.get(j).getName())
						&& list.get(i).getId() == list.get(j).getId()){
					list.get(j).type=1;
				}
			}
		}
		return list;
	}
	//去重的输出
	public void printElement1(List<Student> list){
		for (int i = 0; i < list.size(); i++) {
			// 我们已知List中放的是userInfo对象
			Student us = list.get(i);
			if(us.type==0){
				text.append("姓名:" + us.getName() + "    学分为:" + us.getScore() + "   身份证:" +us.getId()+"\n");
			}
		}
	}

}

 

package 排序与去重;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Insets;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class SortUI extends JFrame{

	public static void main(String[] args) {
		SortUI ui = new SortUI();
		ui.init();
	}
	
	public void init(){
		//基本设置
		this.setTitle("排序去重器");
		this.setSize(500, 300);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setLayout(new BorderLayout());
		this.setResizable(false);
		//添加组件
		JPanel panel = new JPanel();
		
		panel.setBackground(Color.GRAY);
		JTextArea text = new JTextArea();
		text.setEditable(false);
		JScrollPane pane = new JScrollPane(text);
		text.setMargin(new Insets(5, 5, 5, 5));
		this.add(panel,BorderLayout.WEST);
		panel.setPreferredSize(new Dimension(150, 300));
		this.add(pane,BorderLayout.CENTER);
		
		JLabel l1 = new JLabel("学生信息:");
		JLabel l2 = new JLabel("姓名      学分      身份证");
		JLabel l3 = new JLabel("个数:");
		JTextField field = new JTextField();
		JButton b1 = new JButton("生成");
		JLabel l4 = new JLabel("分类");
		String[] items = {"升序","降序"};
		JComboBox box = new JComboBox(items);
		JButton b2 = new JButton("排序");
		JButton b3 = new JButton("去重");
		
		panel.setLayout(null);
		panel.add(l1);
		l1.setBounds(0, 10, 100, 25);
		panel.add(l2);
		l2.setBounds(0, 35, 150, 25);
		panel.add(l3);
		l3.setBounds(0, 65, 55, 25);
		panel.add(field);
		field.setBounds(35, 65, 90, 25);
		panel.add(b1);
		b1.setBounds(45, 100, 60, 25);
		panel.add(l4);
		l4.setBounds(0, 135, 55, 25);
		panel.add(box);
		box.setBounds(45, 135, 60, 25);
		panel.add(b2);
		b2.setBounds(45, 170, 60,25);
		panel.add(b3);
		b3.setBounds(45, 200, 60, 25);
		
		this.setVisible(true);
		
		SortListener lis = new SortListener(field, box, text);
		b1.addActionListener(lis);
		b2.addActionListener(lis);
		b3.addActionListener(lis);
	}
	
}

 

package 排序与去重;

public class Student {

	private String name;
	private int score;
	private int id;
	public int type;

	// 构造方法
	public Student(String name, int score, int id) {
		this.name = name;
		this.score = score;
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getScore() {
		return score;
	}

	public void setScore(int score) {
		this.score = score;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	// 输出学生的基本信息
	public void showInfo() {
		System.out.println("姓名:" + name + "  学分为:" + score + "  身份证:" + id);
	}

	// 重写equals方法
	public boolean equals(Object obj) {
		System.out.println("比较方法");
		if (this == obj) {
			return true;
		}
		if (obj instanceof Student) {
			Student s = (Student) obj;// 向下转型
			if (this.id == s.id && this.name.equals(s.name)
					&& this.score == s.score) {
				return true;
			}
		}
		return false;
	}
}

  1.自定义队列是属于什么类型的数据结构?
                       线性结构
   2.如何实现自定义队列
                 数组的长度是固定的 ,无法直接操作内存,所以定义了一个类,让类封装了对数据的增,删,改,查的操作
 
java的集合框架类型
    1.Set
      1.无序的
      2.不能有重复的数据
      3.不能使用索引来获得数据
      4.如果要获得数据必须需要使用迭代器
   
   
    2.List
           实现的类:
    class AbstractList<E>
           此类提供 List 接口的骨干实现,以最大限度地减少实现“随机访问”数据存储(如数组)支持的该接口所需的工作。
    class AbstractSequentialList<E>
   此类提供了 List 接口的骨干实现,从而最大限度地减少了实现受“连续访问”数据存储(如链接列表)支持的此接口所需的工作。
    class ArrayList<E>
          List 接口的大小可变数组的实现。
    class LinkedList<E>
          List 接口的链接列表实现。
    class Stack<E>
          Stack 类表示后进先出(LIFO)的对象堆栈。
    class Vector<E>
          Vector 类可以实现可增长的对象数组。
         
          AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList,
           RoleList, RoleUnresolvedList, Stack, Vector
    1.有序的
    2.操作方式类似
    3.是使用数组来实现
   
   
    3.Map
                   映射,一一对应
     键值对方式存储数据
     只要键值不同,那么值是可以相同的
     
     学号和学生,身份证和人
     
     
     不是Collection的子类,是一个与Collection于同一级别的接口
   
    4.队列  
           自定义队列:自己定义队列里面的方法和属性
           接口Queue实现的类有: AbstractQueue, ArrayBlockingQueue, ArrayDeque,
               ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque,
               LinkedBlockingQueue, LinkedList, PriorityBlockingQueue,
               PriorityQueue, SynchronousQueue
                   

分享到:
评论

相关推荐

    集合框架学习笔记

    集合框架是Java编程语言中的核心组成部分,它提供了一套高效、灵活的数据结构和算法操作,使得程序员能够方便地存储和管理对象。这篇学习笔记将深入探讨Java集合框架的基础概念、主要类库以及常见应用场景。 首先,...

    集合框架的总结

    在Java编程语言中,集合框架是开发者日常工作中不可或缺的一部分,它提供了一种高效管理对象的方式。本文将深入探讨集合框架的总结,重点关注其核心接口、类以及如何通过源码理解和利用这些工具。 首先,集合框架的...

    学士后Java集合框架和泛型课后习题答案

    Java集合框架是Java编程语言中的一个核心组成部分,它为数据存储和操作提供了丰富的类库。在Java中,集合框架主要包括接口(如List、Set、Queue)和实现这些接口的类(如ArrayList、HashSet、LinkedList等)。这个...

    Java集合框架及泛型

    Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高效的数据结构和操作这些数据结构的方法。泛型则是Java在J2SE 5.0版本引入的一个特性,极大地提高了代码的类型安全性和可读性。下面我们将深入...

    java集合框架图

    ### Java集合框架详解 #### 一、Java集合框架概述 Java集合框架是Java标准库的重要组成部分,它提供了存储和操作对象的各种数据结构。通过使用集合框架,开发人员可以轻松地管理不同类型的数据集,并且能够利用...

    Java集合框架详解

    Java集合框架是Java编程语言中的一个核心组成部分,它为存储、管理和操作对象提供了一套统一的接口和类。本文将深入解析Java集合框架的各个方面,包括Collection、List、Set和Map,以及它们的相关实现和使用原理。 ...

    集合框架练习.doc

    集合框架练习 在 Java 中,集合框架(Java Collections Framework)是 Java 语言中的一种数据结构,可以用来存储和操作大量数据。集合框架提供了多种数据结构,如列表、集合、映射等,可以满足不同的应用需求。下面...

    java集合 框架 泛型

    Java集合框架是Java编程语言中一个至关重要的组成部分,它为数据存储和操作提供了丰富的类库。泛型是Java 5引入的一项创新特性,极大地增强了集合框架的安全性和效率。本讲解将深入探讨这两个主题,以及与之相关的...

    《集合框架及泛型》

    BDQN ACCP 7.0 Java《集合框架及泛型》学习资料.part1

    Java集合框架总结

    ### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...

    Java集合框架使用总结

    ### Java集合框架使用总结 #### 前言 本文旨在为读者提供关于Java集合框架的概览性介绍,帮助理解其整体架构与设计理念。对于希望深入掌握特定接口或类使用方法的学习者,建议查阅官方提供的Java API文档。 #### ...

    Java集合框架学习笔记

    Java集合框架是Java编程语言中一个至关重要的组成部分,它提供了数据结构和算法的抽象,使得开发者可以方便地存储和管理各种类型的数据。本篇将详细探讨Java集合框架的基础知识,包括核心接口、类的层级结构以及Java...

    【Java】Java集合框架思维导图。

    xmind格式的Java集合框架学习导图,包括Collection接口/Map接口以及具体实现类。 同样包含大厂面试题,也在导图中有所体现。 能学到什么: 更加成体系的知识框架,更加全面的、系统的知识。 思维导图: 思维导图具有...

    Java集合框架.ppt

    集合是将多个元素组成一个单元的...Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中

    集合框架和集合类介绍.doc

    集合框架是Java编程语言中的核心组件,用于存储和管理对象。在.NET框架中,也有类似的集合框架,但这里我们主要讨论Java的集合框架。集合框架提供了多种数据结构,如列表、集和映射,用于组织和操作数据。 首先,...

    集合框架的使用方法

    在Java编程语言中,集合框架是处理对象集合的核心工具,它提供了一套高效、灵活的数据结构和算法。本文将深入探讨集合框架的使用方法,包括其基本概念、主要类库以及常见操作,同时也会提及一些源码分析和实用工具。...

    集合框架及泛型资料

    集合框架与泛型是Java编程语言中的核心概念,它们极大地提高了代码的可读性、安全性和效率。在Java中,集合框架是一组接口和类,它们提供了存储和操作对象的统一方式。泛型则是Java 5引入的一个特性,用于在编译时...

    集合框架源码分析

    Java集合框架是Java编程语言中的一个核心组件,它为数据组织提供了一系列的接口和类,使得数据处理变得高效且易于管理。在这个主题中,我们将深入分析集合框架的源码,理解其内部工作原理,以便更好地利用这些工具...

    数据结构和Java集合框架

    数据结构和Java集合框架是Java编程中至关重要的概念,它们是高效编程和算法设计的基础。在Java中,数据结构指的是组织、存储和管理数据的方式,而集合框架则是一组接口和类,为处理各种数据结构提供了统一的API。 ...

Global site tag (gtag.js) - Google Analytics