有个二维数组,怎样以行为单位将数组倒序。谁有好的算法,把思路讲一下,因为那个二维数组有5k多条记录,所以要追求速度。谢谢!!!
解决方案 »
- 关于paintComponent()
- 怎么让jvm可调用更多内存…… 高分!求大侠帮助
- 请教一个问题,java 中fully encapsulated是什么概念?
- 通过什么软件,能将文本转换为二进制各市进行察看,比如UtralEdit 等工具!___特急
- 为什么这里会抛出异常呢?
- 回答java如何读写PowerPopit 可以增加到200分,求求大侠们帮忙了
- 如何使SimpleDateFormat("MMM dd hh:mm")函数显示的月份不为中文????
- 取绝对值的问题:double abs(x-y)>0.5 系统提示我method abs(double) not found
- 请问何处下载JDK。
- 一个有私有构造方法的类为什么不可以被extends?
- 如何从BLOB字段获取文件类型?
- 两进程通信,有一方面出了问题怎么解决?
就两重循环,不能再快了吧有一种替代的方法就是实际不倒,但通过自己写一个访问函数就可以了,如:
int getItem(int[][] array, int row, int col){
return array[row][array[row].length - col-1];
}
for(int j;;)
getItem(array,i,j);
所以要找一个优化点的算法。
原来的JTable基本上是只能显示数据,在JDK6新增了对JTable的排序和过滤功能,下面代码演示了这两个功能public class JTableTester {
static String data[][] = {
{"China","Beijing","Chinese"},
{"America","Washington","English"},
{"Korea","Seoul","Korean"},
{"Japan","Tokyo","Japanese"},
{"France","Paris","French"},
{"England","London","English"},
{"Germany","Berlin","German"},
};
static String titles[] = {"Country","Capital","Language"};
public static void main(String[] args) {
DefaultTableModel m = new DefaultTableModel(data,titles);
JTable t = new JTable(m);
final TableRowSorter sorter = new TableRowSorter(m);
t.setRowSorter(sorter); //为JTable设置排序器
JScrollPane sPane = new JScrollPane();
sPane.setViewportView(t);
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p,BoxLayout.X_AXIS));
JLabel l = new JLabel("Criteria:");
final JTextField tf = new JTextField();
JButton b = new JButton("Do Filter");
p.add(l);
p.add(tf);
p.add(b);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(tf.getText().length()==0){
sorter.setRowFilter(null);
}else{
sorter.setRowFilter(RowFilter.regexFilter(tf.getText()));//为JTable设置基于正则表达式的过滤条件
}
}
});
JFrame f = new JFrame("JTable Sorting and Filtering");
f.getContentPane().add(sPane,BorderLayout.CENTER);
f.getContentPane().add(p,BorderLayout.SOUTH);
f.setSize(400,300);
f.setVisible(true);
}
}
import java.util.Collections;
import java.util.Comparator;public class A {
public static void main(String[] args) {
ArrayList<int[]> a = new ArrayList<int[]>();
a.add(new int[] { 3, 2 });
a.add(new int[] { 1, 2 });
a.add(new int[] { 4, 2 });
a.add(new int[] { 7, 2 });
a.add(new int[] { 2, 2 });
System.out.println("原数组:");
print(a);
Collections.sort(a, new MyCom());
System.out.println("升序:");
print(a);
Collections.sort(a, new MyCom2());
System.out.println("降序:");
print(a);
} static void print(ArrayList<int[]> a) {
for (int i = 0; i < a.size(); i++) {
for (int j = 0; j < a.get(i).length; j++) {
System.out.print(a.get(i)[j] + " ");
}
System.out.println();
}
}
}class MyCom implements Comparator<int[]> {//以第一列升序
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
}class MyCom2 implements Comparator<int[]> {//以第一列降序
public int compare(int[] o1, int[] o2) {
return o2[0] - o1[0];
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class A {
public static void main(String[] args) {
ArrayList<int[]> a = new ArrayList<int[]>();
a.add(new int[] { 3, 2 });
a.add(new int[] { 1, 2 });
a.add(new int[] { 4, 2 });
a.add(new int[] { 7, 2 });
a.add(new int[] { 2, 2 });
System.out.println("原数组:");
print(a);
Collections.sort(a, new MyCom(0));
System.out.println("升序:");
print(a);
Collections.sort(a, new MyCom(1));
System.out.println("降序:");
print(a);
} static void print(ArrayList<int[]> a) {
for (int i = 0; i < a.size(); i++) {
for (int j = 0; j < a.get(i).length; j++) {
System.out.print(a.get(i)[j] + " ");
}
System.out.println();
}
}
}class MyCom implements Comparator<int[]> {//以第一列升序
int type; public int compare(int[] o1, int[] o2) {
return type == 0 ? o1[0] - o2[0] : o2[0] - o1[0];
} public MyCom(int type) {
this.type = type;
}
}
第二、提高搜索准确性,专业的中文分词;
第三,智能分析关键词,纠错,相关词提取等;
第四、方法搜索 关键词的关系(与 或 非)等;