JAVA 取出数组中特定的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA 取出数组中特定的值相关的知识,希望对你有一定的参考价值。

在JAVA种中我现在有一个数组~是从数据库中的一个无限级分类表里取出来的,我要怎么实现单独取出类似sql种where pid=0这样的值
数据结构为
id pid name

1 0 湖南
2 1 长沙
3 1 株洲
4 1 宁乡
5 0 湖北
6 5 武汉
这样的一个数组,
我要取出比如 所有pid等于1的值~从数组中 不是从数据库中~

一行数据代表一个对象,全部对象放在一个List中,先遍历list,再内层遍历看对象的属性pid是否为1追问

求方法~没想法不知道怎么写

追答

想法都告诉你了。什么都靠别人自己到最后什么都不会的

参考技术A 自己写个方法,遍历这个数组,把pid等于1的值取出来。追问

求方法~没想法不知道怎么写

Java中怎么取出数组中某个单位的某个值进行排序?

Student[] s=new Student[5];
s[0]=new Student("西西",59,78,80);
s[1]=new Student("小亿",67,78,70);
s[2]=new Student("咚咚",23,84,77);
s[3]=new Student("李济",69,78,73);
s[4]=new Student("冰芳",76,74,71);

比如我要按每个中的最后一个的值进行从高到低顺序依次打印出来s[]数组?要怎么搞?

sort(T[] a, Comparator<? super T> c)

用这个函数,自定义comparator函数实现最后一个值排序

import java.util.Arrays;
import java.util.Comparator;
public class TestDengCha 
 public static void main(String[] agrs) 
  Student[] s = new Student[5];
  s[0] = new Student("西西", 59, 78, 80);
  s[1] = new Student("小亿", 67, 78, 70);
  s[2] = new Student("咚咚", 23, 84, 77);
  s[3] = new Student("李济", 69, 78, 73);
  s[4] = new Student("冰芳", 76, 74, 71);
  Arrays.sort(s, new Comparator<Student>() 
   @Override
   public int compare(Student s1, Student s2) 
    if (s1 != null && s2 != null) 
     return s1.getEnglish() > s2.getEnglish() ? 1 : (s1.getEnglish() == s2.getEnglish() ? 0 : -1);
    
    return 0;
   
  );
  System.out.println(Arrays.toString(s));
 

class Student 
 private String name;
 private int chinese;
 private int math;
 private int english;
 Student(String name, int chinese, int math, int english) 
  this.name = name;
  this.chinese = chinese;
  this.english = english;
 
 public String getName() 
  return name;
 
 public void setName(String name) 
  this.name = name;
 
 public int getChinese() 
  return chinese;
 
 public void setChinese(int chinese) 
  this.chinese = chinese;
 
 public int getMath() 
  return math;
 
 public void setMath(int math) 
  this.math = math;
 
 public int getEnglish() 
  return english;
 
 public void setEnglish(int english) 
  this.english = english;
 
 @Override
 public String toString() 
  return "姓名:" + name + " 语文" + chinese + " 数学" + math + " 英语" + english;
 

参考技术A Collections 类的方法 sort
public static <T> void sort(List<T> list,
Comparator<? super T> c)

根据指定比较器产生的顺序对指定列表进行排序。此列表内的所有元素都必须可使用指定比较器相互比较(也就是说,对于列表中的任意
e1 和 e2 元素,c.compare(e1, e2) 不得抛出
ClassCastException)。
此排序被保证是稳定的:不会因调用 sort 而对相等的元素进行重新排序。
排序算法是一个经过修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,则忽略合并)。此算法提供可保证的 n log(n) 性能。
指定列表必须是可修改的,但不必是可大小调整的。此实现将指定列表转储到一个数组中,并对数组进行排序,在重置数组中相应位置每个元素的列表上进行迭代。这避免了由于试图原地对链接列表进行排序而产生的
n2 log(n) 性能。

参数:
list - 要排序的列表。
c - 确定列表顺序的比较器。null 值指示应该使用元素的自然顺序。
抛出:
ClassCastException -
如果列表中包含不可使用指定比较器相互比较 的元素。
UnsupportedOperationException
- 如果指定列表的列表迭代器不支持 set 操作。
参考技术B 将你的每一个数组的最后一个数放在num[]整形数组中,然后调用方法
Arrays.sort(num)(升序);

System.out.println("从大到小输出:");
for (int m = num.length-1; m >=0; m--)
System.out.println(num[m]);//从大到小输出

追问

可是你这输出来的 就只有那个数的排序吧?还有别的内容要一起显示出来呢?

参考技术C 数组中的元素现在是一个对象,只要获取对象的属性值,然后对数组进行排序即可。 参考技术D 最后一个数值是Student的什么属性呢?
可以对s[i].属性这个值进行排序,可用冒泡排序

以上是关于JAVA 取出数组中特定的值的主要内容,如果未能解决你的问题,请参考以下文章

IDL 中 如何从一个数组中随机取出3个数?

java中HashSet怎样遍历取出里面的值?给个例子~~

java中HashSet怎样遍历取出里面的值?给个例子~~

java中怎么取出数组中的数组

在java中怎么取出数组中的数据

给定的数组任意取出三个数(要求全部取到且不能重复)求和,找出和中最小值 Java 说说思路或者算法就